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

David Cole DLRdave at aol.com
Sat Nov 21 21:18:53 EST 2015


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/20151121/e09b2451/attachment.html>


More information about the CMake mailing list