在cmake

时间:2018-04-17 09:17:26

标签: cmake

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

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

现在我需要添加该汇编程序文件以及我的二进制目录的一部分。我在cmake的邮件方面进行了一些研究,我看到使用汇编程序文件,它有点不同,你不能像c文件一样包含它们。您必须有时对它们进行预处理,并将其输出作为依赖项包含在最终的二进制文件中。或者我明白了。

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

  • 使用get_filename_component命令获取汇编程序文件名和路径:
  • 在'add_custom_command'中预处理这样的文件:

    COMMAND $ {COMPILER_NAME} --preprocess = p $ {ASSEMBLER_FILE_NAME}>     $ {} OUT_S_FILE 其中OUT_S_FILE将作为依赖项添加到目标中,然后将其作为依赖项添加到二进制文件中,以便在创建二进制文件之前创建它。现在我不明白-preprocess = p参数我试过google但它无济于事我不知道它是否正确或它实际上做了什么(我在一个处理一些汇编文件的例子中看到过它)。 / p>

  • 设置一个变量:“ASM_OUT_FILE”到上面处理的文件的路径

  • 创建一个依赖于此“ASM_OUT_FILE”的自定义目标

最后将此目标添加为依赖项,以便在创建二进制文件之前创建它。

对不起,我无法为我所做的事情提供更多实际例子,但这与工作有关:D。

结果是“没有规则为该汇编程序文件制作目标”,好像该文件不存在但是(我已选中)。

如果有其他事情我需要做或者我在处理这个汇编程序文件时做错了,请告诉我。感谢您阅读,如果我的表现不太清楚,我很抱歉!

编辑:

set_source_files_properties(assembly_file.s PROPERTIES COMPILE_FLAGS "-x assembler-with-cpp")

0 个答案:

没有答案