[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