I am in OSX 10.9.4 , a sample in github is : https://github.com/yujing5b5d/cmake_sample after git clone this project , a operation like this : ------------------------------------------------------------------------------------------------------------
yu:cmake_sample yu$ mkdir build yu:cmake_sample yu$ cd build/ yu:build yu$ cmake .. …. # skip some useless output -- Configuring done -- Generating done -- Build files have been written to: /Users/yu/Workspace/res/cmake_sample/build yu:build yu$ make -j8 ### <<<<<<<<<<<<<<< Scanning dependencies of target LEVELDB_EX_PROJ Scanning dependencies of target iniparser Scanning dependencies of target relfiles Scanning dependencies of target CRFPP_EX_PROJ Scanning dependencies of target iniparser_static [ 15%] [ 15%] [ 20%] [ 20%] [ 25%] Building C object lib/iniparser/CMakeFiles/iniparser_static.dir/ini.c.o Creating directories for 'CRFPP_EX_PROJ' Creating directories for 'LEVELDB_EX_PROJ' Building C object lib/iniparser/CMakeFiles/iniparser.dir/ini.c.o Building CXX object src/CMakeFiles/relfiles.dir/main.cc.o [ 30%] [ 35%] Performing download step (git clone) for 'LEVELDB_EX_PROJ' Performing download step (git clone) for 'CRFPP_EX_PROJ' /Users/yu/Workspace/res/cmake_sample/src/main.cc:3:10: fatal error: 'crfpp.h' file not found #include "crfpp.h" // crfpp ^ Cloning into 'CRFPP_EX_PROJ'... Cloning into 'LEVELDB_EX_PROJ'... Linking C static library ../libiniparser.a Linking C shared library ../libiniparser.dylib [ 35%] [ 35%] Built target iniparser_static Built target iniparser Scanning dependencies of target cmake_sample [ 40%] Building CXX object src/CMakeFiles/cmake_sample.dir/main.cc.o /Users/yu/Workspace/res/cmake_sample/src/main.cc:3:10: fatal error: 'crfpp.h' file not found #include "crfpp.h" // crfpp ^ 1 error generated. 1 error generated. make[2]: *** [src/CMakeFiles/relfiles.dir/main.cc.o] Error 1 make[2]: *** [src/CMakeFiles/cmake_sample.dir/main.cc.o] Error 1 make[1]: *** [src/CMakeFiles/relfiles.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs.... make[1]: *** [src/CMakeFiles/cmake_sample.dir/all] Error 2 …. ------------------------------------------------------------------------------------------------------------ BE CAREFUL OF THIS LINE : >> yu:build yu$ make -j8 the ExternalProject CRFPP_EX_PROJ’s result contains copy a crfpp.h header to a special path, after this process , we can use #include “crfpp.h" ,and If I use make -j8 this means 8 jobs can be running at the same time, I can not constraints and let my compiler compile my main.cc after CRFPP_EX_PROJ finished. Of course , I’m not sure is this my misuse this project . On Sep 16, 2014, at 14:55, Micha Hergarden <micha.hergar...@gmail.com> wrote: > Hello all, > > I do use the ExternalProject to prebuild some binaries, without the > 'superproject' setup, and it does seem to work. Using the add_dependencies, I > can make sure some third party libs are prebuild before I start to build my > project. I have seen some issues with ExternalProject (failing to extract, or > build), but they are too rare to pinpoint and create a bugreport. > > What exactly does not work? Is the external project not build at all, or just > not in time? > > Regards, > Micha > > On 09/16/2014 08:30 AM, Petr Kmoch wrote: >> Hi. >> >> I've never worked with ExternalProject myself, so I can't comment with >> certainty, but from what I understand, the correct way of using >> ExternalProject is to add your own project as an ExternalProject as well. >> Basically, the toplevel CMakeList becomes a superbuild which *only* does >> ExternalProject_Add() calls and does not add any libraries/executables >> directly. After you build the superbuild once to get all the dependencies >> correct, you switch to the "external" project of your own code and work with >> that normally. >> >> Petr >> >> On Mon, Sep 15, 2014 at 4:13 PM, Yu Jing <yujing5...@gmail.com> wrote: >> I had asked in http://stackoverflow.com/questions/25841602 , someone told >> me maybe here is a better place to ask. >> >> I am writing a project base on crfpp , a external project. I use cmake to >> integerate this project as follow . >> >> firstly , I add a extenal project like this: >> >> EXTERNALPROJECT_ADD( >> CRFPP_EX_PROJ >> GIT_REPOSITORY g...@github.com:yujing5b5d/crfpp.git >> PREFIX ${CMAKE_CURRENT_BINARY_DIR} >> CONFIGURE_COMMAND ./configure >> BUILD_COMMAND make -j8 >> BUILD_IN_SOURCE 1 >> INSTALL_COMMAND cp .libs/libcrfpp.a ${PROJECT_BINARY_DIR}/lib && >> cp crfpp.h ${PROJECT_BINARY_DIR}/include >> ) >> this will generate some .a file and copy a header file crfpp.h to folder >> ${PROJECT_BINARY_DIR}/include , which is included in my project. >> >> and then , use the ${PROJECT_BINARY_DIR}/include as include path as follow . >> >> INCLUDE_DIRECTORIES( >> ${PROJECT_SOURCE_DIR}/include >> ${PROJECT_BINARY_DIR}/include >> ) >> finally , when I compile the main project , code like this : >> >> ADD_EXECUTABLE(cmake_sample main.cc) >> ADD_DEPENDENCIES(cmake_sample CRFPP_EX_PROJ) >> TARGET_LINK_LIBRARIES(cmake_sample crfpp) >> In general , if I just build a build folder, compile like this : >> >> cmake .. >> make >> It may works fine, compile the external project first , and copy the header >> file to desired place , and then continue compile main.cc in my project . >> But if I use compile command as multi-thread like this : >> >> cmake .. >> make -j8 >> It will not works because my main.cc and the external project are processed >> at same time, so it report a error like this : >> >> /Users/yu/Workspace/res/cmake_sample/src/main.cc:3:10: fatal error: >> 'crfpp.h' file not found >> #include "crfpp.h" // crfpp >> ^ >> 1 error generated. >> This crfpp.h will generated after CRFPP_EX_PROJ , but in multi-thread >> environment , the sequence is quite different . >> >> My Question is : Is it possible that force let my project compile after >> these external projects all finished . BE CAREFUL , I'm not sure is this the >> problem of my use of ADD_DEPENDENCIES , I also wrote >> >> ADD_DEPENDENCIES(< >> span >> style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;background-repeat:initial >> initial">cmake_sample CRFPP_EX_PROJ) >> but it seems not works ? >> >> Thanks for any help. >> >> >> >> -- >> >> Powered by www.kitware.com >> >> Please keep messages on-topic and check the CMake FAQ at: >> http://www.cmake.org/Wiki/CMake_FAQ >> >> Kitware offers various services to support the CMake community. For more >> information on each offering, please visit: >> >> CMake Support: http://cmake.org/cmake/help/support.html >> CMake Consulting: http://cmake.org/cmake/help/consulting.html >> CMake Training Courses: http://cmake.org/cmake/help/training.html >> >> Visit other Kitware open-source projects at >> http://www.kitware.com/opensource/opensource.html >> >> Follow this link to subscribe/unsubscribe: >> http://public.kitware.com/mailman/listinfo/cmake >> >> >> >
-- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake