我制作了一个使用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和模板类型变量完全相关的各种错误。 我做错了什么?
答案 0 :(得分:1)
也许某些事情会覆盖其他地方的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")