【发布时间】:2016-12-16 10:54:57
【问题描述】:
我有以下 CMake 文件:
project(MyLib)
cmake_minimum_required(VERSION 2.8)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "release")
endif()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Werror")
set(ROOT_DIR ${CMAKE_SOURCE_DIR})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${ROOT_DIR}/bin/${CMAKE_BUILD_TYPE})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${ROOT_DIR}/bin/${CMAKE_BUILD_TYPE})
set(MAIN_LIBRARY_NAME "mylib")
add_subdirectory(src)
add_subdirectory(test_app)
add_subdirectory(test_app1) <--- I want to disable -Werror flag for CMakeLists.txt in this folder.
add_subdirectory(test_app2)
如何禁用子目录之一的 -Werror 标志?在每个子目录中,我也有 CMakeLists.txt。
【问题讨论】:
-
在您调用
add_subdirectory()时,所有变量和目录属性都会复制到子目录的上下文中。要么在此调用之前修改CMAKE_CXX_FLAGS,要么在此调用之后使用add_compile_options()并修改COMPILE_OPTIONS子目录属性。 -
@Florian 我想说的不完全是重复的。此问题的答案包含在该问题中,而不是其中一个答案中。
-
@Antonio 所以我需要像这个问题中的例子一样:stackoverflow.com/questions/33828855/...?
-
@Antonio 或者我可以添加一些编译选项?据我了解,我可以在 add_subdirectory(test_app1) 之后使用 add_compile_options() ,还是我弄错了?
-
@VolodymyrHnatiuk 你应该把
add_compile_options放在子目录CMakeLists.txt文件的开头。它的所有子子目录都将继承这些选项。
标签: cmake