View Issue Details [ Jump to Notes ] | [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
0014266 | CMake | CMake | public | 2013-07-03 08:34 | 2013-12-02 08:51 | ||||
Reporter | ycollet | ||||||||
Assigned To | Brad King | ||||||||
Priority | normal | Severity | minor | Reproducibility | always | ||||
Status | closed | Resolution | fixed | ||||||
Platform | x86 | OS | Windows | OS Version | 7 46 bits | ||||
Product Version | CMake 2.8.11 | ||||||||
Target Version | CMake 2.8.12 | Fixed in Version | CMake 2.8.12 | ||||||
Summary | 0014266: cmake configure step in ExternalProject_Add makes Visual studio stops | ||||||||
Description | I used ExternalProject_Add to configure and compile a thirdparty library (log4cplus-1.1.1). The configure step call cmake. This cmake performs some configure check (check if some headers exist, check if some library is present). Some of these check fails (this is a normal thing because some headers are not present under windows). But when a configure check fails, an error counter is incrementer under visual studio. And when this counter reaches 120, Visual Studio 2008 express stops due to a large number of errors. To overcome this, I needed to activate BUILD_IN_SOURCE and CONFIGURE_LOG. After that, all the messages from the configure step are not displayed anymore in the visual studio console and the error counter is not incremented anymore. After that, the configure step went fine. | ||||||||
Steps To Reproduce | The external project which doesn't worked: ExternalProject_Add(EP_log4cplus PREFIX ${EP_InstallDir}/log4cplus URL http://kent.dl.sourceforge.net/project/log4cplus/log4cplus-stable/1.1.1/log4cplus-1.1.1.tar.bz2 [^] CONFIGURE_COMMAND ${CMAKE_COMMAND} -E make_directory ${EP_InstallDir}/log4cplus/src/EP_log4cplus/build && ${CMAKE_COMMAND} -E chdir ${EP_InstallDir}/log4cplus/src/EP_log4cplus/build ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_PREFIX=${EP_InstallDir}/install .. BUILD_COMMAND ${CMAKE_COMMAND} -E chdir ${EP_InstallDir}/log4cplus/src/EP_log4cplus/build make INSTALL_COMMAND ${CMAKE_COMMAND} -E chdir ${EP_InstallDir}/log4cplus/src/EP_log4cplus/build make install ) The external project command which worked: ExternalProject_Add(EP_log4cplus PREFIX ${EP_InstallDir}/log4cplus URL http://kent.dl.sourceforge.net/project/log4cplus/log4cplus-stable/1.1.1/log4cplus-1.1.1.tar.bz2 [^] CONFIGURE_COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_PREFIX=${EP_InstallDir}/install -DUNICODE=OFF -G "NMake Makefiles" . BUILD_COMMAND ${CMAKE_COMMAND} -E chdir ${EP_InstallDir}/log4cplus/src/EP_log4cplus nmake BUILD_IN_SOURCE 1 INSTALL_COMMAND ${CMAKE_COMMAND} -E chdir ${EP_InstallDir}/log4cplus/src/EP_log4cplus nmake install LOG_CONFIGURE 1 ) | ||||||||
Tags | No tags attached. | ||||||||
Attached Files | |||||||||
Relationships | |||||||||||
|
Relationships |
Notes | |
(0033479) Brad King (manager) 2013-07-03 17:07 |
I cannot reproduce the failure reported for the non-logged example. All the checks run (many fail) and configuration completes. Through what mechanism is this vs counter incrementing? Do error messages from the checks appear in the VS build output window or build logs? |
(0033485) ycollet (reporter) 2013-07-05 02:31 |
I met this problem using visual studio 2008 32 bits used under windows 7 64 bits. Here is the minimal cmakelists.txt file I used: cmake_minimum_required(VERSION 2.6) project(desp_test) # Prevent the "make clean" from cleaning this directory set_directory_properties(PROPERTIES CLEAN_NO_CUSTOM TRUE) include(ExternalProject) set(EP_InstallDir ${CMAKE_BINARY_DIR}/Dependencies) set(LOG4CPLUS_VERSION "1.1.1") # This external project does not works ExternalProject_Add(EP_log4cplus PREFIX ${EP_InstallDir}/log4cplus URL http://kent.dl.sourceforge.net/project/log4cplus/log4cplus-stable/${LOG4CPLUS_VERSION}/log4cplus-${LOG4CPLUS_VERSION}.tar.bz2 [^] CONFIGURE_COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_PREFIX=${EP_InstallDir}/install -DUNICODE=OFF -G "NMake Makefiles" . BUILD_COMMAND ${CMAKE_COMMAND} -E chdir ${EP_InstallDir}/log4cplus/src/EP_log4cplus nmake BUILD_IN_SOURCE 1 INSTALL_COMMAND ${CMAKE_COMMAND} -E chdir ${EP_InstallDir}/log4cplus/src/EP_log4cplus nmake install ) # This external project works #ExternalProject_Add(EP_log4cplus # PREFIX ${EP_InstallDir}/log4cplus # URL http://kent.dl.sourceforge.net/project/log4cplus/log4cplus-stable/${LOG4CPLUS_VERSION}/log4cplus-${LOG4CPLUS_VERSION}.tar.bz2 [^] # CONFIGURE_COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_PREFIX=${EP_InstallDir}/install -DUNICODE=OFF -G "NMake Makefiles" . # BUILD_COMMAND ${CMAKE_COMMAND} -E chdir ${EP_InstallDir}/log4cplus/src/EP_log4cplus nmake # BUILD_IN_SOURCE 1 # INSTALL_COMMAND ${CMAKE_COMMAND} -E chdir ${EP_InstallDir}/log4cplus/src/EP_log4cplus nmake install # LOG_CONFIGURE 1 # ) And below, here is a part of the log I've got in the visual studio console. The configuration step has been aborted due to the 121 errors met during the configuration step: CheckFunctionExists.c CheckFunctionExists.c.obj : error LNK2019: symbole externe non résolu _clock_gettime référencé dans la fonction _main cmTryCompileExec1053871539.exe : fatal error LNK1120: 1 externes non résolus -- Looking for clock_gettime - not found -- Looking for clock_nanosleep CheckFunctionExists.c CheckFunctionExists.c.obj : error LNK2019: symbole externe non résolu _clock_nanosleep référencé dans la fonction _main cmTryCompileExec2856057910.exe : fatal error LNK1120: 1 externes non résolus -- Looking for clock_nanosleep - not found -- Looking for nanosleep CheckFunctionExists.c CheckFunctionExists.c.obj : error LNK2019: symbole externe non résolu _nanosleep référencé dans la fonction _main cmTryCompileExec3743990331.exe : fatal error LNK1120: 1 externes non résolus -- Looking for nanosleep - not found -- Looking for gethostbyname_r CheckFunctionExists.c CheckFunctionExists.c.obj : error LNK2019: symbole externe non résolu _gethostbyname_r référencé dans la fonction _main cmTryCompileExec3929262572.exe : fatal error LNK1120: 1 externes non résolus -- Looking for gethostbyname_r - not found -- Looking for getaddrinfo CheckFunctionExists.c CheckFunctionExists.c.obj : error LNK2019: symbole externe non résolu _getaddrinfo référencé dans la fonction _main cmTryCompileExec4250284368.exe : fatal error LNK1120: 1 externes non résolus -- Looking for getaddrinfo - not found -- Performing Test HAVE_ATTRIBUTE_VISIBILITY src.c D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(5) : error C2143: erreur de syntaxe : absence de ')' avant '(' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(5) : error C2143: erreur de syntaxe : absence de ')' avant '(' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(5) : error C2091: fonction retournée par la fonction D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(5) : error C2143: erreur de syntaxe : absence de ')' avant 'chaîne' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(5) : error C2091: fonction retournée par la fonction D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(5) : error C2143: erreur de syntaxe : absence de '{' avant 'chaîne' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(5) : error C2059: erreur de syntaxe : '<Inconnu>' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(5) : error C2059: erreur de syntaxe : ')' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(5) : error C2059: erreur de syntaxe : ')' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(5) : error C2059: erreur de syntaxe : ')' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(6) : error C2143: erreur de syntaxe : absence de ')' avant '(' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(6) : error C2143: erreur de syntaxe : absence de ')' avant '(' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(6) : error C2091: fonction retournée par la fonction D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(6) : error C2143: erreur de syntaxe : absence de ')' avant 'chaîne' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(6) : error C2091: fonction retournée par la fonction D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(6) : error C2143: erreur de syntaxe : absence de '{' avant 'chaîne' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(6) : error C2059: erreur de syntaxe : '<Inconnu>' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(6) : error C2059: erreur de syntaxe : ')' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(6) : error C2059: erreur de syntaxe : ')' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(6) : error C2059: erreur de syntaxe : ')' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(8) : error C2143: erreur de syntaxe : absence de ')' avant '(' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(8) : error C2143: erreur de syntaxe : absence de ')' avant '(' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(8) : error C2091: fonction retournée par la fonction D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(8) : error C2143: erreur de syntaxe : absence de ')' avant 'chaîne' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(8) : error C2091: fonction retournée par la fonction D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(8) : error C2143: erreur de syntaxe : absence de '{' avant 'chaîne' -- Performing Test HAVE_ATTRIBUTE_VISIBILITY - Failed -- Performing Test HAVE_DECLSPEC_DLLEXPORT D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(8) : error C2059: erreur de syntaxe : '<Inconnu>' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(8) : error C2059: erreur de syntaxe : ')' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(8) : error C2059: erreur de syntaxe : ')' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(8) : error C2059: erreur de syntaxe : ')' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(9) : error C2143: erreur de syntaxe : absence de ')' avant '(' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(9) : error C2143: erreur de syntaxe : absence de ')' avant '(' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(9) : error C2091: fonction retournée par la fonction D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(9) : error C2143: erreur de syntaxe : absence de ')' avant 'chaîne' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(9) : error C2091: fonction retournée par la fonction D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(9) : error C2143: erreur de syntaxe : absence de '{' avant 'chaîne' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(9) : error C2059: erreur de syntaxe : '<Inconnu>' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(9) : error C2059: erreur de syntaxe : ')' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(9) : error C2059: erreur de syntaxe : ')' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.c(9) : error C2059: erreur de syntaxe : ')' src.c Création de la bibliothèque cmTryCompileExec2561857527.lib et de l'objet cmTryCompileExec2561857527.exp -- Performing Test HAVE_DECLSPEC_DLLEXPORT - Success -- Performing Test HAVE_CXX11_THREAD_LOCAL src.cxx D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.cxx(1) : error C2144: erreur de syntaxe : 'int' doit être précédé de ';' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.cxx(1) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.cxx(2) : error C2144: erreur de syntaxe : 'int' doit être précédé de ';' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.cxx(2) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.cxx(4) : error C2144: erreur de syntaxe : 'int' doit être précédé de ';' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.cxx(4) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.cxx(4) : error C2086: 'int thread_local' : redéfinition D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.cxx(1) : voir la déclaration de 'thread_local' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.cxx(4) : error C2086: 'int x' : redéfinition D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.cxx(1) : voir la déclaration de 'x' -- Performing Test HAVE_CXX11_THREAD_LOCAL - Failed -- Performing Test HAVE_GCC_THREAD_EXTENSION src.cxx D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.cxx(8) : error C2144: erreur de syntaxe : 'int' doit être précédé de ';' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.cxx(8) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.cxx(9) : error C2144: erreur de syntaxe : 'int' doit être précédé de ';' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.cxx(9) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.cxx(11) : error C2144: erreur de syntaxe : 'int' doit être précédé de ';' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.cxx(11) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.cxx(11) : error C2086: 'int __thread' : redéfinition D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.cxx(8) : voir la déclaration de '__thread' D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.cxx(11) : error C2086: 'int x' : redéfinition D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.cxx(8) : voir la déclaration de 'x' -- Performing Test HAVE_GCC_THREAD_EXTENSION - Failed -- Performing Test HAVE_DECLSPEC_THREAD src.cxx -- Performing Test HAVE_DECLSPEC_THREAD - Success -- Performing Test LOG4CPLUS_HAVE_CXX11_ATOMICS src.cxx D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CMakeTmp\src.cxx(1) : fatal error C1083: Impossible d'ouvrir le fichier include : 'atomic' : No such file or directory -- Performing Test LOG4CPLUS_HAVE_CXX11_ATOMICS - Failed -- Looking for sys/types.h CheckIncludeFile.c -- Looking for sys/types.h - found -- Looking for stddef.h CheckIncludeFile.c -- Looking for stddef.h - found -- Check size of socklen_t _SOCKLEN_SIZE.c D:\temp\build\Dependencies\log4cplus\src\EP_log4cplus\CMakeFiles\CheckTypeSize\_SOCKLEN_SIZE.c(3) : fatal error C1083: Impossible d'ouvrir le fichier include : 'sys/socket.h' : No such file or directory -- Check size of socklen_t - failed -- Threads: -- Sources: loggingserver.cxx -- Configuring done -- Generating done -- Build files have been written to: D:/temp/build/Dependencies/log4cplus/src/EP_log4cplus Le journal de génération a été enregistré à l'emplacement "file://d:\temp\build\EP_log4cplus.dir\Debug\BuildLog.htm" [^] EP_log4cplus - 121 erreur(s), 3 avertissement(s) ------ Génération ignorée : Projet : ALL_BUILD, Configuration : Debug Win32 ------ Projet non sélectionné dans le cadre d'une génération pour cette configuration de solution ========== Génération : 1 a réussi, 1 a échoué, 0 mis à jour, 1 a été ignoré ========== |
(0033510) Brad King (manager) 2013-07-08 12:18 |
The build of the outer project inside the visual studio environment is setting the environment variable VS_UNICODE_OUTPUT as a backdoor to hook into error messages from the compiler no matter how many levels of processes and stdout/stderr redirection exist in between. The invocations of the compiler run through nmake inside the try_compile checks are leaking build output through this backdoor. The LOG_CONFIGURE option causes the commands to be wrapped in a script that un-sets VS_UNICODE_OUTPUT which is why that workaround works for you. Somehow we need to unset VS_UNICODE_OUTPUT but we'll have to think about the right place for that. |
(0033511) Brad King (manager) 2013-07-08 14:58 |
For reference, the LOG_* suppression of VS_UNICODE_OUTPUT was added here: http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=44aff73d [^] |
(0033524) Brad King (manager) 2013-07-10 13:26 edited on: 2013-07-16 13:52 |
I've generalized the fix mentioned in 0014266:0033511 to cover all CMake and CTest processes: http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=45d2966d [^] Local testing shows that the "This external project does not works" case described in 0014266:0033485 now works (and didn't before). |
(0034641) Robert Maynard (manager) 2013-12-02 08:51 |
Closing resolved issues that have not been updated in more than 4 months. |
Notes |
Issue History | |||
Date Modified | Username | Field | Change |
2013-07-03 08:34 | ycollet | New Issue | |
2013-07-03 16:54 | Brad King | Relationship added | related to 0014265 |
2013-07-03 16:55 | Brad King | Relationship added | related to 0014263 |
2013-07-03 17:07 | Brad King | Note Added: 0033479 | |
2013-07-05 02:31 | ycollet | Note Added: 0033485 | |
2013-07-08 12:18 | Brad King | Note Added: 0033510 | |
2013-07-08 14:58 | Brad King | Note Added: 0033511 | |
2013-07-10 08:41 | Brad King | Assigned To | => Brad King |
2013-07-10 08:41 | Brad King | Status | new => assigned |
2013-07-10 08:41 | Brad King | Target Version | => CMake 2.8.12 |
2013-07-10 13:26 | Brad King | Note Added: 0033524 | |
2013-07-10 13:26 | Brad King | Status | assigned => resolved |
2013-07-10 13:26 | Brad King | Resolution | open => fixed |
2013-07-10 13:26 | Brad King | Fixed in Version | => CMake 2.8.12 |
2013-07-16 13:52 | Brad King | Note Edited: 0033524 | |
2013-12-02 08:51 | Robert Maynard | Note Added: 0034641 | |
2013-12-02 08:51 | Robert Maynard | Status | resolved => closed |
Issue History |
Copyright © 2000 - 2018 MantisBT Team |