让CMake CHECK_CXX_COMPILER_FLAG工作

sel*_*osi 8 cmake

注意:这是我第一次使用CMake.我不太了解它,所以我只是发布一堆信息,看看是否有人能看到我的问题.

在我的编译器中,我希望能够自动确定哪个c ++ 11标志是合适的.这条线有很多例子.以下是我的CMakeLists.txt以下示例:

cmake_minimum_required (VERSION 2.8)

#Add the c++11 flag, whatever it is
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG(-std=c++11 COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG(-std=c++0x COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
elseif(COMPILER_SUPPORTS_CXX0X)
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
else()
  message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()

project(AnalyzeGames)
set(AnalyzeGames_SRCS AnalyzeGames.cpp)
add_executable(AnalyzeGames ${AnalyzeGames_SRCS})
Run Code Online (Sandbox Code Playgroud)

尝试使用此文件时,这是我的cmake输出:http://pastebin.com/3AUwqffD

这是CMakeError.log:http://pastebin.com/EbNKvGt8

这是CMakeOutput.log:http://pastebin.com/kVJ0enJC

echo $CC:/ usr/bin/gcc

echo $CXX:/ usr/bin/g ++

我可以手动使用任一标志用g ++编译一个简单的测试可执行文件.

cmake --version:cmake版本2.8.12.2

出于某种原因,CMake没有意识到我的编译器确实支持这两个标志.

小智 7

cmake输出告诉您它不能识别'.cxx'扩展名,因为它不知道您的项目是C++项目.要解决此问题,您应该在项目命令中启用C++ .尝试更改以下行:

project(AnalyzeGames)
Run Code Online (Sandbox Code Playgroud)

至:

project(AnalyzeGames CXX)
Run Code Online (Sandbox Code Playgroud)

然后将其移动到CMakeLists.txt的第二行,正下方cmake_minimum_required.在此之后配置应该按预期工作.