我正在使用 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 解决方案。
还有工具链文件,在 vtk wiki 上提到过。这使您可以指定自定义工具链。它通常用于交叉编译,但我以前用它来让其他工具链工作。