【发布时间】:2009-01-12 15:12:14
【问题描述】:
我正在使用 GCC v4+ 中提供的一些功能,并希望 CMake 找到 GCC v4 编译器,如果找不到,则返回错误,说明需要 GCC v4。
有人对如何做这样的事情有任何模块/想法吗?
谢谢。
【问题讨论】:
我正在使用 GCC v4+ 中提供的一些功能,并希望 CMake 找到 GCC v4 编译器,如果找不到,则返回错误,说明需要 GCC v4。
有人对如何做这样的事情有任何模块/想法吗?
谢谢。
【问题讨论】:
使用try_compile()命令,尝试编译以下程序
#if __GNUC__ != 4
#error
#endif
int main() { return 0; }
【讨论】:
实现 gcc 版本检查的完全不同(不一定更好)的方法如下:
if(CMAKE_COMPILER_IS_GNUCXX)
exec_program(
${CMAKE_CXX_COMPILER}
ARGS --version
OUTPUT_VARIABLE _compiler_output)
string(REGEX REPLACE ".* ([0-9]\\.[0-9]\\.[0-9]) .*" "\\1"
gcc_compiler_version ${_compiler_output})
message(STATUS "C++ compiler version: ${gcc_compiler_version} [${CMAKE_CXX_COMPILER}]")
if(gcc_compiler_version MATCHES "4\\.[0-9]\\.[0-9]")
message(FATAL_ERROR "foobar")
...
if(gcc_compiler_version VERSION_GREATER "4.5.99")
...
...
【讨论】:
cmake 本身可能很快就会有解决方案,参见。 http://cmake.3232098.n2.nabble.com/GCC-compiler-version-td7185771.html
cmake 的未来版本可能包含两个变量:CMAKE_C_COMPILER_VERSION 和 CMAKE_CXX_COMPILER_VERSION。
哈拉斯,我还没有在 2.8.8 更新日志中看到它们。
我现在使用@cmaker 解决方案。
【讨论】:
还有工具链文件,is mentioned on the vtk wiki。这使您可以指定自定义工具链。它通常用于交叉编译,但我之前用它来让其他工具链工作。
【讨论】: