[CMake] FindQt4.cmake broken without C language

Hendrik Sattler post at hendrik-sattler.de
Fri May 11 12:09:56 EDT 2007


Am Freitag 11 Mai 2007 03:14 schrieb Alan W. Irwin:
> On 2007-05-11 00:07+0200 Hendrik Sattler wrote:
> > Am Donnerstag 10 Mai 2007 19:39 schrieb Alan W. Irwin:
> >> [...]This error is caused by lack of C support.
> >
> > Yes. It is obviously that way. But it is kind of non-sense to require a C
> > compiler for a library like Qt4.
>
> I think you are probably correct to be concerned with a C dependency for
> the QT4 module.

Below, you can find a fix for it. Looks like all of TRY_COMPILE command
usages should be reviewed to not be fixed implicitely on CMAKE_C_COMPILER
(at least not if the stuff is fully doable with CMAKE_CXX_COMPILER).

-----------------------snip-------------------------
--- /c/local/cmake/share/cmake-2.4/Modules/CheckSymbolExists.cmake.orig Wed Jan 10 11:03:28 2007
+++ /c/local/cmake/share/cmake-2.4/Modules/CheckSymbolExists.cmake      Fri May 11 08:56:30 2007
@@ -13,6 +13,11 @@
 #  CMAKE_REQUIRED_INCLUDES = list of include directories
 #  CMAKE_REQUIRED_LIBRARIES = list of libraries to link
 
+SET(CHECK_SYMBOL_SOURCE_FILE_EXTENSION "c")
+IF(NOT CMAKE_C_COMPILER)
+  SET(CHECK_SYMBOL_SOURCE_FILE_EXTENSION "cpp")
+ENDIF(NOT CMAKE_C_COMPILER)
+
 MACRO(CHECK_SYMBOL_EXISTS SYMBOL FILES VARIABLE)
   IF("${VARIABLE}" MATCHES "^${VARIABLE}$")
     SET(CMAKE_CONFIGURABLE_FILE_CONTENT "/* */\n")
@@ -37,12 +42,12 @@
       "${CMAKE_CONFIGURABLE_FILE_CONTENT}\nvoid cmakeRequireSymbol(int dummy,...){(void)dummy;}\nint main()\n{\n#ifndef ${SYMBOL}\n  cmakeRequireSymbol(0,&${SYMBOL});\n#endif\n  return 0;\n}\n")
 
     CONFIGURE_FILE("${CMAKE_ROOT}/Modules/CMakeConfigurableFile.in"
-      "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckSymbolExists.c" @ONLY)
+      "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckSymbolExists.${CHECK_SYMBOL_SOURCE_FILE_EXTENSION}" @ONLY)
 
     MESSAGE(STATUS "Looking for ${SYMBOL}")
     TRY_COMPILE(${VARIABLE}
       ${CMAKE_BINARY_DIR}
-      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckSymbolExists.c
+      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckSymbolExists.${CHECK_SYMBOL_SOURCE_FILE_EXTENSION}
       COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
       CMAKE_FLAGS 
       -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_SYMBOL_EXISTS_FLAGS}
@@ -55,7 +60,7 @@
       FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log 
         "Determining if the ${SYMBOL} "
         "exist passed with the following output:\n"
-        "${OUTPUT}\nFile ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckSymbolExists.c:\n"
+        "${OUTPUT}\nFile ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckSymbolExists.${CHECK_SYMBOL_SOURCE_FILE_EXTENSION}:\n"
         "${CMAKE_CONFIGURABLE_FILE_CONTENT}\n")
     ELSE(${VARIABLE})
       MESSAGE(STATUS "Looking for ${SYMBOL} - not found.")
@@ -63,7 +68,7 @@
       FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log 
         "Determining if the ${SYMBOL} "
         "exist failed with the following output:\n"
-        "${OUTPUT}\nFile ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckSymbolExists.c:\n"
+        "${OUTPUT}\nFile ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckSymbolExists.${CHECK_SYMBOL_SOURCE_FILE_EXTENSION}:\n"
         "${CMAKE_CONFIGURABLE_FILE_CONTENT}\n")
     ENDIF(${VARIABLE})
   ENDIF("${VARIABLE}" MATCHES "^${VARIABLE}$")
-----------------------snip-------------------------

HS


More information about the CMake mailing list