相关疑难解决方法(0)

add_compile_options和SET之间的区别(CMAKE_CXX_FLAGS ...)

这个问题与Instruct Cmake在驾驶链接时使用CXX和CXXFLAGS有关吗?在前一个问题中,我们试图指示CMake CXXFLAGS在调用链接器时使用它.

add_compile_options

我们发现以下代码

if (CMAKE_VERSION VERSION_LESS 2.8.12)
    add_definitions(-foo)
else()
    add_compile_options(-foo)
endif()

message(STATUS, "CXXFLAGS: ${CMAKE_CXX_FLAGS}")
Run Code Online (Sandbox Code Playgroud)

产生输出

CXXFLAGS:
Run Code Online (Sandbox Code Playgroud)

SET CMAKE_CXX_FLAGS

我们发现以下代码

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -foo" )

message(STATUS, "CXXFLAGS: ${CMAKE_CXX_FLAGS}")
Run Code Online (Sandbox Code Playgroud)

产生输出

CXXFLAGS: -foo
Run Code Online (Sandbox Code Playgroud)

问题

我们发现CMake会-foo在两种情况下都使用它来创建目标文件.所以-foo肯定是进入了CXXFLAGS.

第一组CMake代码和第二组CMake代码之间有什么区别?

为什么CMAKE_CXX_FLAGS在一个实例中未设置,并在另一个实例中设置?

cmake compiler-options

22
推荐指数
1
解决办法
2万
查看次数

获取构建命令或将用于构建目标的所有编译器标志

是否有一种合理的方法来获取包含构建命令的CMake变量或CMake将与目标关联的所有编译器标志?

尝试收集和维护可以添加标志的所有属性的列表似乎不切实际.此外,CMake必须在某处拥有此信息,因为它必须最终生成构建系统.

CMake文档看起来这个功能曾经存在并且是通过调用提供的,build_command()但是它被替换了:

注意在3.0之前的CMake版本中,此命令返回一个命令行,该命令行直接调用当前生成器的本机构建工具.

是否有一个新命令可以提供旧的行为build_command()

cmake

15
推荐指数
1
解决办法
2490
查看次数

如何从 CMake 生成的构建系统中检索目标属性?

假设我有一个现有项目,并且它是 cmake 配置的构建目录。如果我知道目标名称,如何使用此构建检索某些目标的属性?我尝试创建一个像这样的单独脚本

get_target_property(VAR target property)
Run Code Online (Sandbox Code Playgroud)

但它因错误而失败

Command get_target_property() is not scriptable
Run Code Online (Sandbox Code Playgroud)

还有其他方法吗?

cmake target

5
推荐指数
1
解决办法
2万
查看次数

标签 统计

cmake ×3

compiler-options ×1

target ×1