cmake如何为每个模块设置不同的gcc标志?

时间:2019-02-22 19:03:33

标签: gcc cmake static-libraries

我想用子模块-静态库创建项目c ++(gcc)。基本库应始终进行优化构建,并且没有调试信息,主模块不能进行优化并且具有调试信息。 第一个标志解决方案是CMAKE_CXX_FLAGS:

project(example)
set(CMAKE_CXX_FLAGS "-O3 -std=c++14")
add_executable(example main.cpp example.cpp log.h example.h)
add_library(log log.cpp log.h)
target_link_libraries(example log)

但是这种解决方案是全球性的。最好使用add_compile_options:

project(example)
add_compile_options(-std=c++14)
add_executable(example main.cpp example.cpp log.h example.h)
add_compile_options(-O3)
add_library(log log.cpp log.h)
target_link_libraries(example log)

但是再说一次-第二个模块必须是第一个模块的标志失败,我只能添加选项,不能更改。

1 个答案:

答案 0 :(得分:2)

您正在寻找target_compile_options而不是add_compile_options