You're welcome. I see you have ${file}-2.h5m in only one place, though... Is that a leftover, or is the other reference to -2 just omitted from your example...?
Cheers, David C. On Monday, November 23, 2015, Nico Schlömer <nico.schloe...@gmail.com> wrote: > Thanks David for your explanations. I've now reached a good solution: > > Fetch the data: > ``` > INCLUDE(ExternalData) > set( > ExternalData_URL_TEMPLATES > "https://downloads.sourceforge.net/project/noshdata/%(algo)/%(hash)" > ) > foreach(file ${input_files}) > ExternalData_Expand_Arguments( > noshTestFetchData > OUT_DATA DATA{${CMAKE_SOURCE_DIR}/test/data/${file}.e} > ) > endforeach() > ExternalData_Add_Target(noshTestFetchData) > ``` > Define conversion commands: > ``` > foreach(file ${input_files}) > LIST(APPEND FILES2 ${file}-2.h5m) > add_custom_command( > DEPENDS ${file}.e > COMMAND convert ${file}.e ${file}.h5m > OUTPUT ${file}.h5m > ) > endforeach() > ``` > Add a custom target with ALL: > ``` > add_custom_target(split2 ALL > SOURCES ${FILES2} > ) > ``` > Adding the output files to the SOURCES makes the target do what's its > supposed to do. > > Cheers, > Nico > > On Sun, Nov 22, 2015 at 11:59 PM David Cole <dlrd...@aol.com > <javascript:_e(%7B%7D,'cvml','dlrd...@aol.com');>> wrote: > >> You don't. You just assume all relevant targets have already been built >> by the time you run the tests... There's no such thing as a test from >> an add_test call depending on a target. >> >> There **is** a dependency, of course, if you are using one of the build >> products in your test, but it's assumed that everything is already built at >> test time. >> >> There is not yet a notion of connecting certain tests to certain build >> targets. >> >> So, for example, there is no way to re-run only the tests affected by >> things which have changed since the last build, because there is no >> connection between targets and tests. >> >> People have artificially created such connections using test labels, and >> running subsets of tests by label, but there is no official dependency from >> tests back to targets. >> >> >> D >> >> >> >> On Sunday, November 22, 2015, Nico Schlömer <nico.schloe...@gmail.com >> <javascript:_e(%7B%7D,'cvml','nico.schloe...@gmail.com');>> wrote: >> >>> Aha, this was a misunderstanding of me then. Thanks! >>> How do I make a test depend on a target then? >>> >>> Cheers, >>> Nico >>> >>> >>> On Sun, Nov 22, 2015 at 8:58 PM David Cole <dlrd...@aol.com> wrote: >>> >>>> The DEPENDS property of a test is meant to ensure test running order in >>>> the case of parallel testing... It simply ensures that one test runs before >>>> another. It is not connected to the build system at all. It's different >>>> than target dependencies. >>>> >>>> >>>> D >>>> >>>> >>>> >>>> On Sunday, November 22, 2015, 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