cmake - CMake 占位符如何工作?

标签 cmake

在 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>在这里居住?能否以特定于目标的方式填写?

最佳答案

占位符的起源有一点魔力:

  • add_definitions 填充, target_compile_definitions命令和对应的属性,
  • include_directories 填写, target_include_directories等等,
  • add_compile_options 填充, target_compile_options等等加上 CMAKE__FLAGS 变量及其特定于配置的对,
  • 是源文件,
  • 是对应的对象。
    也就是说,影响 C/C++ 程序构建的所有内容都会影响(在适应语言之后)其他语言的库/可执行文件。

    关于cmake - CMake 占位符如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44958411/