View Issue Details [ Jump to Notes ] | [ Print ] |
ID | Project | Category | View Status | Date Submitted | Last Update |
0014841 | CMake | CMake | public | 2014-03-26 09:57 | 2014-10-06 10:33 |
|
Reporter | wim van loocke | |
Assigned To | | |
Priority | high | Severity | major | Reproducibility | always |
Status | closed | Resolution | no change required | |
Platform | mint 16 | OS | linux | OS Version | Linux-3.11.0-12- |
Product Version | CMake 2.8.12.2 | |
Target Version | | Fixed in Version | | |
|
Summary | 0014841: setting CMAKE_C_COMPILER to gcc creates endless loops |
Description | Create 2 projects
cmake_minimum_required(VERSION 2.8.11)
project(pro1 )
#adding crosscompiler stuff
SET( CMAKE_C_COMPILER ${COMPILER_PATH}${CROSS_COMPILE}gcc )
message("CMAKE_C_COMPILER ${CMAKE_C_COMPILER} " )
SET( CMAKE_CXX_COMPILER ${COMPILER_PATH}${CROSS_COMPILE}g++ )
message("CMAKE_CXX_COMPILER ${CMAKE_CXX_COMPILER} " )
add_subdirectory(pro2)
cmake_minimum_required(VERSION 2.8.4)
project(pro2 )
message( STATUS "CMAKE_C_COMPILER = ${CMAKE_C_COMPILER}" )
message( STATUS "CMAKE_CXX_COMPILER = ${CMAKE_CXX_COMPILER}" ) |
Steps To Reproduce | just run cmake . and you will see endless loop
CMAKE_C_COMPILER gcc
CMAKE_CXX_COMPILER g++
-- CMAKE_C_COMPILER = /usr/bin/gcc
-- CMAKE_CXX_COMPILER = /usr/bin/g++
-- Configuring done
You have changed variables that require your cache to be deleted.
Configure will be re-run and you may have to reset some variables.
The following variables have changed:
CMAKE_C_COMPILER= /usr/bin/cc
-- The C compiler identification is GNU 4.8.1
-- The CXX compiler identification is GNU 4.8.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
CMAKE_C_COMPILER gcc
CMAKE_CXX_COMPILER g++
-- CMAKE_C_COMPILER = /usr/bin/gcc
-- CMAKE_CXX_COMPILER = /usr/bin/g++
-- Configuring done
You have changed variables that require your cache to be deleted.
Configure will be re-run and you may have to reset some variables.
The following variables have changed:
CMAKE_C_COMPILER= /usr/bin/cc
CMAKE_CXX_COMPILER= /usr/bin/c++
-- The C compiler identification is GNU 4.8.1
-- The CXX compiler identification is GNU 4.8.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
|
Additional Information | I suppose that at the top level project you can define the compiler for all subprojects.
I also found out that when SET( CMAKE_C_COMPILER .. ) is done after the add_subdirectory(pro2), there is no endless loop, but i have to redefine CMAKE_C_COMPILER in the CMakeLists.txt of the pro2
|
Tags | No tags attached. |
|
Attached Files | CMakeLists.txt [^] (7,475 bytes) 2014-03-26 09:57 [Show Content] [Hide Content]cmake_minimum_required(VERSION 2.8.11)
project(pro1 )
#adding crosscompiler stuff
add_subdirectory(libxml2)
SET( CMAKE_C_COMPILER ${COMPILER_PATH}${CROSS_COMPILE}gcc )
message("CMAKE_C_COMPILER ${CMAKE_C_COMPILER} " )
SET( CMAKE_CXX_COMPILER ${COMPILER_PATH}${CROSS_COMPILE}g++ )
message("CMAKE_CXX_COMPILER ${CMAKE_CXX_COMPILER} " )
# Compiler
#set(CMAKE_C_FLAGS "-O2 -Wall -Wextra ${CMAKE_C_FLAGS}")
#set(CMAKE_BUILD_TYPE "RelWithDebInfo")
# Options
#option(ENABLE_CACHE "Enable cache support in Hiawatha." on)
#option(ENABLE_DEBUG "Enable debug information (for development only)." off)
#option(ENABLE_IPV6 "Enable IPv6 support in Hiawatha." on)
#option(ENABLE_MONITOR "Enable support for the Hiawatha Monitor." off)
#option(ENABLE_RPROXY "Enable reverse proxy support in Hiawatha." on)
#option(ENABLE_SSL "Enable SSL (PolarSSL) support in Hiawatha." on)
#option(ENABLE_TOMAHAWK "Enable Tomahawk in Hiawatha" off)
#option(ENABLE_TOOLKIT "Enable the URL toolkit in Hiawatha" on)
#option(ENABLE_XSLT "Enable XSLT support in Hiawatha." on)
#option(USE_SYSTEM_POLARSSL "Use the system's PolarSSL (>=1.2.0) library." off)
#option(USE_SYSTEM_LIBXML2 "Use the system's LIBXML2 (>=x.x.x) library." off)
#option(USE_SYSTEM_LIBXSLT "Use the system's LIBXSLT (>=x.x.x) library." off)
## Includes
#include(CMakeFiles.txt)
#include(CheckIncludeFile)
#include(CheckIncludeFiles)
#include(CheckFunctionExists)
#include(CheckLibraryExists)
#include(CheckSymbolExists)
#if(ENABLE_XSLT)
## if we crosscompile we need the crossed compile lib
## CMAKE_CROSSCOMPILING is set when CMAKE_SYSTEM_NAME is set
# if( NOT USE_SYSTEM_LIBXML2 )
# add_subdirectory(libxml2)
# endif()
# if( NOT USE_SYSTEM_LIBXSLT )
# # add_subdirectory(libxslt)
# endif()
## include(FindLibXml2)
## include(FindLibXslt)
#endif()
##include(cmake/GNUInstallDirs.cmake)
#include(cmake/CopyIfNotExists.cmake)
## Settings
#set(HIAWATHA_VERSION_MAJOR 9)
#set(HIAWATHA_VERSION_MINOR 4)
#set(HIAWATHA_VERSION_PATCH 0)
#string(TOLOWER ${CMAKE_PROJECT_NAME} PROJECT_NAME)
#if(${HIAWATHA_VERSION_PATCH} EQUAL 0)
# set(HIAWATHA_VERSION "${HIAWATHA_VERSION_MAJOR}.${HIAWATHA_VERSION_MINOR}")
#else()
# set(HIAWATHA_VERSION "${HIAWATHA_VERSION_MAJOR}.${HIAWATHA_VERSION_MINOR}.${HIAWATHA_VERSION_PATCH}")
#endif()
#if(EXISTS "/proc/loadavg")
# option(ENABLE_LOADCHECK "Enable the ability to check for server load." on)
#endif()
#set(CONFIG_DIR ${CMAKE_INSTALL_FULL_SYSCONFDIR}/hiawatha CACHE STRING "Configuration directory")
#set(LOG_DIR ${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/log/hiawatha CACHE STRING "Log directory")
#set(PID_DIR ${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/run CACHE STRING "PID directory")
#set(WEBROOT_DIR ${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/www/hiawatha CACHE STRING "Webroot directory")
#set(WORK_DIR ${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/lib/hiawatha CACHE STRING "Work directory")
## Compiler directives
#check_include_file(crypt.h HAVE_CRYPT_H)
#check_include_file(arpa/inet.h HAVE_ARPA_INET_H)
#check_include_files("sys/types.h;netinet/in.h" HAVE_NETINET_IN_H)
#check_include_files("sys/types.h;netinet/tcp.h" HAVE_NETINET_TCP_H)
#check_include_file(rpcsvc/crypt.h HAVE_RPCSVC_CRYPT_H)
#check_function_exists(setenv HAVE_SETENV)
#check_function_exists(unsetenv HAVE_UNSETENV)
#check_function_exists(clearenv HAVE_CLEARENV)
#check_function_exists(strcasecmp HAVE_STRCASECMP)
#check_function_exists(strncasecmp HAVE_STRNCASECMP)
#check_function_exists(strnstr HAVE_STRNSTR)
#check_function_exists(strcasestr HAVE_STRCASESTR)
#check_function_exists(strncasestr HAVE_STRNCASESTR)
#check_library_exists(crypt crypt "" HAVE_CRYPT_LIBRARY)
#check_library_exists(crypt crypt_r "" HAVE_CRYPT_R)
#check_library_exists(network socket "" HAVE_NETWORK_LIBRARY)
#check_library_exists(z gzdopen "" HAVE_Z_LIBRARY)
#check_symbol_exists("SO_ACCEPTFILTER" "sys/socket.h" HAVE_ACCF)
#if(HAVE_CRYPT_LIBRARY)
# set(CRYPT_LIBRARY "crypt")
#endif()
#if(HAVE_NETWORK_LIBRARY)
# set(NETWORK_LIBRARY "network")
#endif()
#if(HAVE_Z_LIBRARY)
# set(Z_LIBRARY "z")
#endif()
#if(APPLE OR CYGWIN)
# set(CIFS 1)
#endif()
## CPack
#set(CPACK_PACKAGE_VERSION_MAJOR ${HIAWATHA_VERSION_MAJOR})
#set(CPACK_PACKAGE_VERSION_MINOR ${HIAWATHA_VERSION_MINOR})
#set(CPACK_PACKAGE_VERSION_PATCH ${HIAWATHA_VERSION_PATCH})
#set(CPACK_SOURCE_GENERATOR "TGZ")
#set(CPACK_SOURCE_PACKAGE_FILE_NAME "${PROJECT_NAME}-${HIAWATHA_VERSION}")
#set(CPACK_SOURCE_IGNORE_FILES "/build(/|_.*/)")
#include(CPack)
## PolarSSL
#if(ENABLE_SSL)
# if(NOT USE_SYSTEM_POLARSSL)
# option(USE_SHARED_POLARSSL_LIBRARY "Build PolarSSL as a shared library." on)
# endif()
# set(CMAKE_INSTALL_NAME_DIR ${CMAKE_INSTALL_FULL_LIBDIR}/hiawatha)
# set(LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/hiawatha)
# if(USE_SYSTEM_POLARSSL)
# find_library(POLARSSL polarssl)
# else()
# add_definitions(-DPOLARSSL_THREADING_PTHREAD -DPOLARSSL_THREADING_C)
# add_subdirectory(polarssl)
# endif()
# set(POLARSSL_LIBRARY "polarssl")
#endif()
## Hiawatha
#include_directories(${CMAKE_CURRENT_BINARY_DIR})
#if(NOT USE_SYSTEM_POLARSSL)
# include_directories(polarssl/include)
#endif()
#if(ENABLE_XSLT)
# include_directories(${LIBXML2_INCLUDE_DIR} ${LIBXSLT_INCLUDE_DIR})
#endif()
## Configure files
#configure_file(config.h.in config.h)
#foreach (configfile ${config_files_in})
# configure_file(${configfile}.in ${configfile} @ONLY)
#endforeach()
#foreach(manpage ${manual_pages_in})
# configure_file(${manpage}.in ${manpage})
#endforeach()
#configure_file(extra/logrotate.in logrotate.d/hiawatha)
## Binaries
#add_executable(cgi-wrapper ${cgi_wrapper_src})
#add_executable(hiawatha ${hiawatha_src})
#add_executable(ssi-cgi ${ssi_cgi_src})
#add_executable(wigwam ${wigwam_src})
#target_link_libraries(wigwam ${CRYPT_LIBRARY})
#target_link_libraries(hiawatha ${CRYPT_LIBRARY} pthread ${Z_LIBRARY})
#if(ENABLE_SSL)
# target_link_libraries(hiawatha ${POLARSSL_LIBRARY})
# target_link_libraries(wigwam ${POLARSSL_LIBRARY})
# if(NOT USE_SYSTEM_POLARSSL)
# set_target_properties(hiawatha PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_FULL_LIBDIR}/hiawatha)
# set_target_properties(wigwam PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_FULL_LIBDIR}/hiawatha)
# endif()
#endif()
#if(ENABLE_XSLT)
# target_link_libraries(hiawatha ${LIBXML2_LIBRARIES} ${LIBXSLT_LIBRARIES})
#endif()
## Installation
#install(TARGETS hiawatha wigwam DESTINATION ${CMAKE_INSTALL_SBINDIR})
#install(TARGETS cgi-wrapper DESTINATION ${CMAKE_INSTALL_SBINDIR}
# PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE SETUID)
#install(TARGETS ssi-cgi DESTINATION ${CMAKE_INSTALL_BINDIR})
#foreach(configfile ${config_files})
# install(CODE "copy_if_not_exists(\"${CMAKE_SOURCE_DIR}/${configfile}\" \"${CONFIG_DIR}\")")
#endforeach()
#foreach(configfile ${config_files_in})
# install(CODE "copy_if_not_exists(\"${CMAKE_CURRENT_BINARY_DIR}/${configfile}\" \"${CONFIG_DIR}\")")
#endforeach()
#install(FILES ${manual_pages} DESTINATION ${CMAKE_INSTALL_FULL_MANDIR}/man1)
#foreach(manpage ${manual_pages_in})
# install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${manpage} DESTINATION ${CMAKE_INSTALL_FULL_MANDIR}/man1)
#endforeach()
#install(FILES extra/index.html DESTINATION ${WEBROOT_DIR})
## Create directories
#install(DIRECTORY empty DESTINATION ${LOG_DIR} PATTERN "empty" EXCLUDE)
#install(DIRECTORY empty DESTINATION ${PID_DIR} PATTERN "empty" EXCLUDE)
#install(DIRECTORY empty DESTINATION ${WORK_DIR} PATTERN "empty" EXCLUDE)
|
|