使用SDL 2.0和C++ 11进行CMake

Kla*_* S. 5 c++ cmake c++11

我在使用CMake编译C++ 11/SDL 2.0代码时遇到了一些麻烦.CMakeLists非常简单:

cmake_minimum_required(VERSION 2.6)
project(Test)

include(FindPkgConfig)
pkg_search_module(SDL2 REQUIRED sdl2)
include_directories(${SDL2_INCLUDE_DIRS})
target_link_libraries(sdl2test ${SDL2_LIBRARIES})

add_definitions(-std=c++0x)
add_executable(Test src/main.cpp)
Run Code Online (Sandbox Code Playgroud)

但是,在编译时,我收到此错误:

Scanning dependencies of target Test
[100%] Building CXX object CMakeFiles/Test.dir/src/main.cpp.o
/var/dev/cmake/src/main.cpp: In function ‘int main(int, char**)’:
/var/dev/cmake/src/main.cpp:11:16: error: ‘nullptr’ was not declared in this scope
/var/dev/cmake/src/main.cpp:17:16: error: ‘nullptr’ was not declared in this scope
make[2]: *** [CMakeFiles/Test.dir/src/main.cpp.o] Error 1
make[1]: *** [CMakeFiles/Test.dir/all] Error 2
make: *** [all] Error 2
Run Code Online (Sandbox Code Playgroud)

cmake版本2.8.9和gcc 4.7.2.有关如何正确使用CMake的C++ 11功能的任何想法?

ps:我也试过-std = c ++ 11

Fra*_*ser 6

add_definitions实际上是用于设置预处理器定义.你需要在CMAKE_CXX_FLAGS这里设置:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
Run Code Online (Sandbox Code Playgroud)