【发布时间】:2022-02-01 07:33:42
【问题描述】:
在我的项目中,我有一个根 CMakeLists.txt,它定义了一些可执行文件。我使用target_compile_options 为这些可执行文件配置一些设置,例如警告。我有一些子目录可以编译一些库以与可执行文件链接。如何在不重新定义每个子目录CMakeLists.txt 中的编译选项的情况下将编译选项从根CMakeLists.txt 传播到子目录中的依赖项?
例如,这里是我的根CMakeLists.txt的简化版
cmake_minimum_required(VERSION 3.8)
project(proj)
enable_language(C ASM)
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_C_EXTENSIONS OFF)
add_subdirectory(src/lib/somelib)
add_executable(my_executable src/app/main.c)
target_compile_options(my_executable PUBLIC -Wpedantic) # as an example
target_link_libraries(my_executable PRIVATE somelib)
和src/lib/somelib中的CMakeLists.txt
add_library(somelib somelib.c)
target_include_directories(somelib PUBLIC .)
在此示例中,我希望使用根 CMakeLists.txt 中的任何编译选项来编译 somelib.c。
【问题讨论】: