[CMake] Problem with custom command
Robert Dailey
rcdailey.lists at gmail.com
Tue Mar 12 17:00:32 EDT 2013
On second thought I think I realize the problem here... I'm not
specifying the OUTPUT file as a dependency in add_library(), I'm only
specifying the SOURCE file (listed under DEPENDS in the custom command
call) as the source in add_library(). The output file is temporary, I
don't actually want to depend on that- - only the source.
On Tue, Mar 12, 2013 at 3:58 PM, Robert Dailey <rcdailey.lists at gmail.com> wrote:
> I'm adding a custom command to a target created via add_library().
> here is the function I call to create the custom command:
>
>
> function( define_data target_name output_subdir )
> set( data_files ${ARGN} )
> set( output_dir ${CMAKE_BINARY_DIR}/output/data/${output_subdir} )
> set( copycmd ${CMAKE_COMMAND} -E copy )
>
> foreach( d ${data_files} )
> #get_filename_component( file ${d} NAME )
> #set( output_file ${output_dir}/${d} )
> #set( source_file ${CMAKE_CURRENT_SOURCE_DIR}/${d} )
> set( output_file ${output_dir}/${d} )
> set( source_file ${d} )
>
> list( APPEND output_files ${output_file} )
> list( APPEND copy_commands
> COMMAND ${copycmd} ${source_file} ${output_file}
> )
> endforeach()
>
> source_group( data FILES ${data_files} )
>
> add_custom_command(
> COMMENT "Copying data for target ${target_name}"
> OUTPUT ${output_files}
> DEPENDS ${data_files}
> ${copy_commands}
> )
>
> #add_dependencies( ${target_name} ${data_target} )
> endfunction()
>
> I call this function FIRST, then afterwards I call add_library() and I
> include the data file(s) passed in as a source file to be included in
> the target. When I build that target in VS2008 I do not see any files
> copied to my output/data directory (which does not yet exist on my
> hard drive). Any idea what I'm doing wrong?
>
> How are relative/absolute paths handled here? I'm passing in relative
> paths (just the filename for current source directory) into DEPENDS.
More information about the CMake
mailing list