[CMake] download file, modify, add test from it

Nico Schlömer nico.schloemer at gmail.com
Sun Nov 22 14:02:24 EST 2015


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 <DLRdave at 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.schloemer at 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
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20151122/adb3e297/attachment.html>


More information about the CMake mailing list