I was under the impression that if I don't explicitly build a target, it won't get build. Perhaps I'm wrong here. In any case, this ``` add_custom_target(convert) add_dependencies(convert testFetchData) add_custom_command( TARGET convert COMMAND cp test.e test.g ) ``` never gets executed on `make`, unlike all other targets (e.g., ` testFetchData`). (Full CMakeLists.txt at [1].) Explicitly calling `make convert` works alright.
Any idea why that might be? Cheers, Nico [1] http://chunk.io/f/729beeab41fb4a7385ceb98b31a2ea0a On Sun, Nov 22, 2015 at 8:46 PM David Cole <dlrd...@aol.com> wrote: > What do you mean by "depend" in this case? All libs and exes should be > built during a "make" or "make all" or "make install" ... And all that > should be done before any tests get run. > > Simply typing "ctest" to execute all the tests never does any building. > The assumed workflow is that you build stuff first and then run the tests. > > If you want, you can add a custom target that runs a test, and make that > custom target depend on any other targets, but ctest still won't know about > it. Only "make custom_test_target" will... > > > D > > > > On Sunday, November 22, 2015, Nico Schlömer <nico.schloe...@gmail.com> > wrote: > >> Thanks for the hints! >> I'm almost there now, the only thing missing is to have my test depend on >> the custom_target. This >> ``` >> SET_TESTS_PROPERTIES(testname PROPERTIES DEPENDS convert) >> ``` >> doesn't do the trick: The target `convert` isn't executed before `ctest`. >> >> Any hints? >> >> Cheers, >> Nico >> >> >> On Sun, Nov 22, 2015 at 3:18 AM David Cole <dlrd...@aol.com> wrote: >> >>> Did you try using full path names for the add_custom_command file names? >>> >>> And the NAME/COMMAND form of the add_test command? >>> >>> Also, I've always found custom commands to work best when they're >>> associated with a target. And if it was part of a target you could make the >>> target depend on the external data target with add_dependencies if >>> necessary. >>> >>> >>> HTH, >>> David C. >>> >>> >>> On Saturday, November 21, 2015, Nico Schlömer <nico.schloe...@gmail.com> >>> wrote: >>> >>>> Hi everyone, >>>> >>>> I would like to create a CMake test that does the following: >>>> * Download a file from an external resource >>>> * Do something with the file >>>> * compile an executable myTest >>>> * execute myTest outputfile >>>> >>>> Using ExternalData for downloading the file works well, but the second >>>> step (file conversion, in this example cp for simplicity) does not work: >>>> ``` >>>> cmake_minimum_required(VERSION 3.2) >>>> >>>> project(mytest) >>>> >>>> # Download the files >>>> INCLUDE(ExternalData) >>>> set( >>>> ExternalData_URL_TEMPLATES >>>> "https://downloads.sourceforge.net/project/noshdata/%(algo)/%(hash)" >>>> ) >>>> ExternalData_Expand_Arguments( >>>> testFetchData >>>> OUT_DATA DATA{${CMAKE_SOURCE_DIR}/test.e} >>>> ) >>>> ExternalData_Add_Target(testFetchData) >>>> >>>> add_custom_command( >>>> OUTPUT test.g >>>> COMMAND cp test.e test.g >>>> DEPENDS test.e >>>> ) >>>> >>>> ADD_EXECUTABLE("myTest" main.cpp) >>>> >>>> add_test(myTest test.g) >>>> ``` >>>> I suppose I'm missing something about the dependencies here; after all, >>>> the `add_custom_command` has to wait for `testFetchData` to complete. >>>> Likewise, `add_test` has to wait for `add_custom_command` to complete. >>>> >>>> Hints appreciated. >>>> >>>> Cheers, >>>> Nico >>>> >>>
-- 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