在 CMake 的支持库中,您将看到如下所示的命令定义:
set(CMAKE_ASM${ASM_DIALECT}_COMPILE_OBJECT "<CMAKE_ASM${ASM_DIALECT}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT> -c <SOURCE>")
Run Code Online (Sandbox Code Playgroud)
(/usr/share/cmake-3.5/Modules/CMakeASMInformation.cmake例如在我的安装中)
这里关注我的对象是占位符(短语得到这里):<DEFINES> <INCLUDES> <FLAGS>; 我试图弄清楚它们如何与 CMake 的其余部分进行交互。
鉴于我能够通过设置将标志传递给我的汇编程序CMAKE_ASM-ATT_FLAGS,我有点认为可能有一些魔法将占位符映射到变量名称......但设置CMAKE_ASM-ATT_INCLUDES似乎没有做任何事情。
那么<INCLUDES>这里怎么会有人呢?可以以特定于目标的方式填充吗?
占位符的起源有一点神奇:
<DEFINES> 由add_definitions、target_compile_definitions命令和相应的属性填充,
<INCLUDES> 由include_directories填充,target_include_directories因此,
<FLAGS> 由 填充add_compile_options,target_compile_options因此加上CMAKE_<LANG>_FLAGS变量及其特定于配置的对,
<SOURCE> 是源文件,
<OBJECT>是对应的对象。
也就是说,影响 C/C++ 程序构建的所有内容都会影响(在语言适应后)其他语言的库/可执行文件。
| 归档时间: |
|
| 查看次数: |
443 次 |
| 最近记录: |