在 CMake 的支持库中,您将看到如下所示的命令定义:
set(CMAKE_ASM${ASM_DIALECT}_COMPILE_OBJECT "<CMAKE_ASM${ASM_DIALECT}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT> -c <SOURCE>")
(例如,在我的安装中来自
/usr/share/cmake-3.5/Modules/CMakeASMInformation.cmake
)我感兴趣的对象是placeholders (phrase obtained here) :
<DEFINES>
<INCLUDES>
<FLAGS>
;我试图弄清楚它们如何与 CMake 的其余部分交互。鉴于我能够通过设置
CMAKE_ASM-ATT_FLAGS
将标志传递给我的汇编程序,我有点想可能会有一些魔术将占位符映射到变量名......但是设置CMAKE_ASM-ATT_INCLUDES
似乎什么也没做。那么
<INCLUDES>
在这里居住?能否以特定于目标的方式填写?
最佳答案
占位符的起源有一点魔力:
target_compile_definitions
命令和对应的属性,target_include_directories
等等,add_compile_options
填充, target_compile_options
等等加上 CMAKE_也就是说,影响 C/C++ 程序构建的所有内容都会影响(在适应语言之后)其他语言的库/可执行文件。
关于cmake - CMake 占位符如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44958411/