【问题标题】:How cmake can set different gcc flags for each module?cmake 如何为每个模块设置不同的 gcc 标志?
【发布时间】:2019-02-22 19:03:33
【问题描述】:

我想创建带有子模块的项目 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)

但同样 - 第二个模块必须是第一个模块的标志,我只能添加选项,不能更改。

【问题讨论】:

  • target_link_libraries(example log) ==> target_link_libraries(example PUBLIC log)
  • 另外,不要玩CMAKE_CXX_FLAGS。请改用CMAKE_CXX_STANDARD`

标签: gcc cmake static-libraries


【解决方案1】:

您正在寻找target_compile_options 而不是add_compile_options

【讨论】:

    猜你喜欢
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-20
    • 1970-01-01
    相关资源
    最近更新 更多