我编写了一个使用auto派生模板类型的程序。这个程序是在c++ 11中使用Make文件编译的(它像预期的那样工作),但我需要将程序加入到使用CMake文件的更大的程序中。
我试着在项目的CMakeLists.txt的顶部文件夹中使用这样的东西。
SET(CMAKE_CXX_FLAGS "-std=gnu++11")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-implicit-templates ")
但是运行CMake文件会发送各种与auto和模板类型变量相关的错误。我做错了什么?
可能在其他地方有东西覆盖了CMAKE_CXX_FLAGS。尝试在每个目标的基础上设置编译标志,例如使用target_compile_options
(对于CMake 3.x):
target_compile_options(your_target "-std=gnu++11" "-fno-implicit-templates")
或set_property
如果你使用CMake 2.8.x:
set_property(TARGET your_target APPEND_STRING PROPERTY
COMPILE_FLAGS " -std=gnu++11 -fno-implicit-templates")