是否存在一个变量,其中包含在对CMake的ADD_LIBRARY函数的某些调用中使用的编译器标志,例如我们添加模块时使用的那些:
ADD_LIBRARY(mylib MODULE mysrc.cpp)
或者,有没有办法获得这样的旗帜?
答案 0 :(得分:0)
将我的评论转化为答案
没有一个CMake变量可以获取所有编译器标志。问题是CMake生成器最终将编译器标志(来自各种CMake变量和属性,包括来自依赖目标)放在一起。所以在配置步骤中你没有所有的标志。
我看到以下可能的问题/解决方案对:
C
所代表的),因此无需将编译器标志提取到外部脚本中CMAKE_CXX_COMPILER_LAUNCHER
或RULE_LAUNCH_LINK
CMAKE_EXPORT_COMPILE_COMMANDS
CMAKE_VERBOSE_MAKEFILE
如果你真的只需要输出上的编译器标志,并且你不希望CMake实际编译任何东西,你可以 - 至少对于CMake的Makefile生成器 - 修改{{3}和CMAKE_CXX_COMPILE_OBJECT
这样:
set(CMAKE_DEPFILE_FLAGS_CXX "")
set(
CMAKE_CXX_COMPILE_OBJECT
"<CMAKE_COMMAND> -E echo <FLAGS>"
)
set(
CMAKE_CXX_CREATE_SHARED_MODULE
"<CMAKE_COMMAND> -E echo <CMAKE_SHARED_MODULE_CXX_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_MODULE_CREATE_CXX_FLAGS>"
)
file(WRITE mysrc.cpp "")
add_library(mylib MODULE mysrc.cpp)
<强>参考强>