【发布时间】: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