I am trying … That’s a very clear organization 

On Sep 16, 2014, at 19:57, Micha Hergarden <[email protected]> wrote:

> Hello Yu,
> 
> That is because of the following lines:
> 
> AUX_SOURCE_DIRECTORY(. DIR_TARGET)
> ADD_LIBRARY (relfiles ${DIR_TARGET})
> 
> I think you may be misusing the aux_source_directory command. I have tested 
> your setup on a linux machine with -j8 and it still builds. Did you take a 
> look at the openchemistry setup?
> 
> Regards,
> Micha
> 
> On 09/16/2014 01:42 PM, Yu Jing wrote:
>> Hello Micha,
>> It seems still not work….
>> 
>> On Sep 16, 2014, at 17:36, Micha Hergarden <[email protected]> wrote:
>> 
>>> Hello Yu,
>>> 
>>> It seems I too needed another trick to make it work:
>>> set_property(TARGET CRFPP_EX_PROJ PROPERTY EXCLUDE_FROM_ALL TRUE)
>>> set_property(TARGET LEVELDB_EX_PROJ PROPERTY EXCLUDE_FROM_ALL TRUE)
>>> 
>>> ADD_DEPENDENCIES(cmake_sample iniparser_static CRFPP_EX_PROJ 
>>> LEVELDB_EX_PROJ)
>>> 
>>> By default the ExternalProject_Add will add that target to the ALL target, 
>>> and that confuses the Make dependency checker. I have removed those 
>>> dependencies in my project. On the whole I agree with Marcel Loose and Petr 
>>> Kmoch however. Combining their solution makes for a 'cleaner' project. To 
>>> be honest, I am halfway of migrating my project to a superbuild as well. 
>>> Take a look at the openchemistry project if you would like to see an 
>>> example of that: https://github.com/OpenChemistry/openchemistry
>>> 
>>> Regards,
>>> Micha Hergarden
>>> 
>>> 
>>> On 09/16/2014 11:04 AM, Marcel Loose wrote:
>>>> Hi Yu,
>>>> 
>>>> I think you need to add an explicit dependency of main.cc on the 
>>>> "generated" (well, not really generated, but installed) header file 
>>>> crfpp.h. CMake has no clue as to what files are being compiled/installed 
>>>> by your external project, so you have to make this explicit.
>>>> 
>>>> HTH,
>>>> Marcel Loose.
>>>> 
>>>> 
>>>> On 16/09/14 10:41, Yu Jing wrote:
>>>>> Hello  Micha ,
>>>>> 
>>>>> It seems doesn’t work.
>>>>> I updated code , and move the external project to src , and it still not 
>>>>> work.
>>>>> 
>>>>> what should be noticed is :
>>>>> 1. If I just use 
>>>>> $ make
>>>>> as make command ,all styles are work
>>>>> 2. If I use in multi jobs
>>>>> $ make -j8
>>>>> It will run abnormal (not desired sequence) .
>>>>> 
>>>>> 
>>>>> On Sep 16, 2014, at 15:27, Micha Hergarden <[email protected]> 
>>>>> wrote:
>>>>> 
>>>>>> It may be that you have line 63 and 64 the wrong way around:
>>>>>> ADD_SUBDIRECTORY(src)
>>>>>> ADD_SUBDIRECTORY(lib)
>>>>>> 
>>>>>> The externalproject is added in lib, but you add a dependency on it in 
>>>>>> src. CMake will descend in the subdirectories in the order you supply 
>>>>>> them.
>>>>>> Does reversing the directories help?
>>>>>> 
>>>>>> Regards,
>>>>>> Micha
>>>>>> 
>>>>>> On 09/16/2014 09:17 AM, Yu Jing wrote:
>>>>>>> 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 <[email protected]> 
>>>>>>> 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 <[email protected]> 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 [email protected]: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 .
>>>>>>>>> .
>>>>>>>>>  <
>>>>>>>>> /span>
>>>>>>>>> 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
>> 
> 

-- 

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

Reply via email to