【发布时间】:2018-06-23 07:51:58
【问题描述】:
我正在尝试通过一个简单的项目来学习 CMake。这是我的示例CMakeLists.txt
cmake_minimum_required(VERSION 3.11 FATAL_ERROR)
set(PROJECT_NAME "MyLib" CXX)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
project(${PROJECT_NAME})
include(${CMAKE_SOURCE_DIR}/Sources.cmake)
set(SOURCE_FILES ${COMMON_CPP_FILES} ${COMMON_H_FILES})
include_directories(include)
add_compile_options("$<$<CONFIG:Debug>:/EHa /MTd /W3 /w14640>")
add_library(${PROJECT_NAME} STATIC ${SOURCE_FILES})
我尝试基于此文件创建一个 Visual Studio 项目,但我不知道如何正确设置编译标志。当我打开 Visual Studio 时,我可以看到标志 (/EHa) 作为“附加选项”的一部分,但我仍然可以看到默认 (/EHsc) 标志。
为什么默认标志仍然存在,我如何确保编译器确实在使用我指定的标志?
【问题讨论】:
-
你在正确的轨道上。事实上,您应该为每个生成器表达式使用一个标志,或者您必须使用
;分号而不是空格来使其成为选项列表(否则它会被引用并解释为单个命令行选项)。因此,在您的情况下,它应该与$<$<CONFIG:Debug>:/EHa;/MTd;/W3;/w14640>一起使用。