I want to tune initial compile and linker flags to put into cache.
in main CMakeLists.txt:

# Override default Compiler flags
set(CMAKE_USER_MAKE_RULES_OVERRIDE MyCompilerFlags)
project(MyProject)

in MyCompilerFlags.cmake:

check_cxx_linker_flag("-Wl,--warn-unresolved-symbols" 
HAVE_LD_WARN_UNRESOLVED_SYMBOLS)

if(HAVE_LD_WARN_UNRESOLVED_SYMBOLS)
        set(CMAKE_SHARED_LINKER_FLAGS_INIT "${CMAKE_SHARED_LINKER_FLAGS_INIT} 
-Wl,--warn-unresolved-symbols")
endif(HAVE_LD_WARN_UNRESOLVED_SYMBOLS)

This works fine for CMake 2.4:
-- Performing Test -Wl,--warn-unresolved-symbols
-- Performing Test -Wl,--warn-unresolved-symbols - Success
-- Performing Test -Wl,--no-undefined
-- Performing Test -Wl,--no-undefined - Success
-- Check for working C compiler: /usr/bin/gcc32
-- Check for working C compiler: /usr/bin/gcc32 -- works
...

But for CMake 2.6 this code fails with error:
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Performing Test -Wl,--warn-unresolved-symbols
CMake Error: Unknown extension ".cxx" for file 
"/vz/build/test/CMakeFiles/CMakeTmp/src.cxx".  TRY_COMPILE only works for 
enabled languages.
Currently enabled languages are: C CXX
See PROJECT command for help enabling other languages.
-- Performing Test -Wl,--warn-unresolved-symbols - Failed
-- Performing Test -Wl,--no-undefined
CMake Error: Unknown extension ".cxx" for file 
"/vz/build/test/CMakeFiles/CMakeTmp/src.cxx".  TRY_COMPILE only works for 
enabled languages.
Currently enabled languages are: C CXX
See PROJECT command for help enabling other languages.
-- Performing Test -Wl,--no-undefined - Failed
-- Check for working C compiler: /usr/bin/gcc32
-- Check for working C compiler: /usr/bin/gcc32 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
...

where check_cxx_linker_flag macro looks line check_cxx_compiler_flag:

file(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.cxx"
        "int main() { return 0;}\n")
message(STATUS "Performing Test ${_FLAG}")
try_compile(${_RESULT}
        ${CMAKE_BINARY_DIR}
        "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.cxx"
        CMAKE_FLAGS -DCMAKE_EXE_LINKER_FLAGS="${_FLAG}"
        OUTPUT_VARIABLE OUTPUT
        )

Any suggestions?
_______________________________________________
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to