我目前正在玩CMake http://cmake.com并想要检测编译器和编译器版本。我现在的CMakeLists.txt
看起来如下:
cmake_minimum_required (VERSION 2.6)
set (PROJECT "a_tour_of_c++")
set (GNUCXX_MINIMUM_VERSION "4.8")
set (CXX_STANDARD "c++11")
message ("${CMAKE_CXX_COMPILER}") # C:/dev/MinGW/bin/g++.exe
message ("${CMAKE_CXX_COMPILER_ID}") # EMPTY
message ("${CMAKE_COMPILER_IS_GNUCXX}") # EMPTY
if (CMAKE_COMPILER_IS_GNUCXX)
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS GNUCXX_MINIMUM_VERSION)
message (FATAL_ERROR "GCC version must be at least ${GNUCXX_MINIMUM_VERSION}!")
endif()
else()
message (FATAL_ERROR "Invalid compiler!")
endif()
set (BUILD_DIR build)
set (HEADER_DIR include)
set (SOURCE_DIR src)
set (MAIN_FILE ${SOURCE_DIR}/main.cc)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=${CXX_STANDARD}")
project ($(PROJECT))
include_directories (${HEADER_DIR})
add_executable (${BUILD_DIR}/${PROJECT} ${MAIN_FILE})
该文件很好,我可以使用该文件成功清理、构建和运行我的 cli 应用程序(如果我注释掉else
- 编译器检查的分支)。
问题是,两者CMAKE_CXX_COMPILER_ID
and CMAKE_COMPILER_IS_GNUCXX
为空(CMAKE_CXX_COMPILER
不是)。
我使用的是 Microsoft Windows 8 (6.3.9600) 操作系统并且MinGW http://mingw.org,更详细的有以下工具。
正如您在屏幕截图中看到的那样,我使用NetBeans 集成开发环境 http://netbeans.org简化整个构建进度。
所以我的问题是:
- 上述变量为空的可能原因是什么?
- 我的问题有解决方法吗?
如果您发现我的(简单)有任何其他问题,请告诉我CMakeLists.txt
file.
放好它after project
命令:
> cat CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
message("before:")
message("> ${CMAKE_CXX_COMPILER}")
message("> ${CMAKE_CXX_COMPILER_ID}")
message("> ${CMAKE_COMPILER_IS_GNUCXX}")
message("-----------------")
project(Foo)
message("after:")
message("> ${CMAKE_CXX_COMPILER}")
message("> ${CMAKE_CXX_COMPILER_ID}")
message("> ${CMAKE_COMPILER_IS_GNUCXX}")
message("-----------------")
> cmake -H. -B_builds
before:
>
>
>
-----------------
-- The C compiler identification is GNU 4.8.1
-- The CXX compiler identification is GNU 4.8.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
after:
> /usr/bin/c++
> GNU
> 1
-----------------
-- Configuring done
-- Generating done
-- Build files have been written to: /.../_builds
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)