¿Alguna forma en CMake para requerir GCC versión 4+?
Pregunta
Estoy usando algunas funciones que se proporcionan en GCC v4 + y me gustaría que CMake encuentre el compilador de GCC v4 y, si no lo encuentra, devuelve un error que indica que se requiere GCC v4.
¿Alguien tiene algún módulo / idea sobre cómo hacer algo como esto?
Gracias.
Solución
Use el comando try_compile () e intente compilar el siguiente programa
#if __GNUC__ != 4
#error
#endif
int main() { return 0; }
Otros consejos
Una forma totalmente diferente (no necesariamente mejor) de implementar una verificación de versión de gcc sería algo así como:
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")
...
...
Pronto puede haber una solución en cmake, cf. http://cmake.3232098.n2.nabble.com/GCC -compiler-version-td7185771.html
Las versiones futuras de cmake pueden incluir dos variables: CMAKE_C_COMPILER_VERSION y CMAKE_CXX_COMPILER_VERSION .
Halas, aún no los he visto en el registro de cambios 2.8.8.
Utilizo la solución @cmaker por ahora.
También está el archivo de cadena de herramientas, que se menciona en el wiki de vtk . Eso le permite especificar cadenas de herramientas personalizadas. Por lo general, se usa para la compilación cruzada, pero lo he usado antes para que otras cadenas de herramientas funcionen.