在cmake中处理汇编程序文件

在cmake中处理汇编程序文件,cmake,Cmake,我正在尝试在cmake中创建一个二进制文件,其中: -依赖于某些.c源文件 -还依赖于汇编程序的.s文件 现在,我通过将变量设置为包含目录中所有.c文件的列表来添加.c文件。到目前为止一切都很好 现在我需要添加这个汇编文件以及我的二进制目录的一部分。我在cmake的邮件归档中做了一些研究,我发现汇编文件有点不同,不能像c文件那样只包含它们。您有时必须对它们进行预处理,并将它们的输出作为最终二进制文件的依赖项包括在内。至少我是这么理解的 我在项目中尝试这样做的方式如下: 使用get\u file

我正在尝试在cmake中创建一个二进制文件,其中: -依赖于某些.c源文件 -还依赖于汇编程序的.s文件

现在,我通过将变量设置为包含目录中所有.c文件的列表来添加.c文件。到目前为止一切都很好


现在我需要添加这个汇编文件以及我的二进制目录的一部分。我在cmake的邮件归档中做了一些研究,我发现汇编文件有点不同,不能像c文件那样只包含它们。您有时必须对它们进行预处理,并将它们的输出作为最终二进制文件的依赖项包括在内。至少我是这么理解的

我在项目中尝试这样做的方式如下:

  • 使用get\u filename\u component命令获取汇编程序文件名和路径:
  • 在“添加自定义命令”中,按如下方式预处理文件:

    命令${COMPILER\u NAME}--preprocess=p${ASSEMBLER\u FILE\u NAME}> ${OUT\u S\u文件} 其中OUT_S_文件将作为依赖项添加到目标,然后作为依赖项添加到二进制文件,以便在创建二进制文件之前创建该文件。现在我不理解--preprocess=p参数,我试着用谷歌搜索它,但没有用,我不知道它是否正确,或者它实际上做了什么(我在一个处理一些汇编文件的示例中看到过它)

  • 将变量“ASM_OUT_FILE”设置为上面处理的文件的路径

  • 创建依赖于此“ASM\u OUT\u文件”的自定义目标
最后,将此目标添加为依赖项,以便在创建二进制文件之前创建它

很抱歉,我不能提供更多关于我所做工作的实际例子,但它与工作相关:D

结果是“没有规则为该汇编程序文件创建目标”,就好像该文件不在那里,但它在那里(我选中了)

如果可能的话,请告诉我是否有其他事情我需要做,或者如果我在处理这个汇编文件时做了一些错误的事情。谢谢你的阅读,如果我的解释不太清楚,我很抱歉

编辑:


“不能像处理c文件那样只包含它们。”-CMake支持汇编程序源代码:。看来你的问题出在别的地方了。显示代码。我尝试过这样设置源文件属性:设置源文件属性(assembly\u file.s properties COMPILE\u FLAGS“-x assembler with cpp”),就像在那篇文章中一样,然后将其添加到我的可执行文件中,现在我遇到一些asm错误,所以我猜该文件是由cmake处理的“现在我发现一些asm错误,所以我猜文件是由cmake处理的”-这样一个模糊的描述…不要在评论中发布代码-将代码添加到问题帖子本身(通过-ing它).Provider.Ok我将在那里添加这段代码。不幸的是,我无法发布更多的代码,因为它与工作相关,我无法复制类似的示例,因为我不知道汇编程序。我只需要使用现有的汇编程序文件。无需添加您当前使用的代码。相反,创建简化的示例,任何人都可以在其上运行由于问题是关于CMake的使用,示例应该包括
CMakeLists.txt
或其部分,其中包括关键命令调用:
add\u executable
,设置编译器/链接器标志等等。不需要
.c
.s
文件的内容。还可以显示运行示例时得到的确切错误消息。因此运行代码的任何人都可能观察到相同(或类似)的错误。如果错误与代码的某行有关,请提供该行。
set_source_files_properties(assembly_file.s PROPERTIES COMPILE_FLAGS "-x assembler-with-cpp")