我试图用一些可执行文件提供一些“源”文件。 我在想,如果有这些源文件复制到构建目录(从源目录)的方式,然后使用C进行安装目录。
我在这里的更具体的目标是包括我自己的* .CL文件写入OpenCL内核。
例:
mkdir build
cd build
cmake ..
make
现在我的目录应该有一个可执行文件(标准CMake的)和some_opencl_kernel.cl
,我在我的可执行文件打开。
我试图用一些可执行文件提供一些“源”文件。 我在想,如果有这些源文件复制到构建目录(从源目录)的方式,然后使用C进行安装目录。
我在这里的更具体的目标是包括我自己的* .CL文件写入OpenCL内核。
例:
mkdir build
cd build
cmake ..
make
现在我的目录应该有一个可执行文件(标准CMake的)和some_opencl_kernel.cl
,我在我的可执行文件打开。
您可以将文件复制到使用构建树add_custom_command
通过添加类似以下内容:
add_custom_command(TARGET MyExe POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${CMAKE_CURRENT_SOURCE_DIR}/src/some_opencl_kernel.cl
$<TARGET_FILE_DIR:MyExe>
)
这增加了一个生成后事件到你的目标(我把它叫做MyExe
),该份文件src/some_opencl_kernel.cl
到同一个目录在构建树为您的可执行文件。
有复制文件到构建树的各种其他的方式,但我喜欢这个,因为它使用的“发电机表达” $<TARGET_FILE_DIR:MyExe>
以确定在建造树中的可执行文件的目录位置。 这取决于例如构建型或平台有所不同,所以发电机表达有关指定这个位置,我觉得最可靠的,跨平台的方式。
至于安装,你可以使用install(FILES ...)
命令。 假设你的可执行文件,你碰到这样的:
install(TARGETS MyExe RUNTIME DESTINATION bin)
你可以添加:
install(FILES src/some_opencl_kernel.cl DESTINATION bin)
将它安装到${CMAKE_INSTALL_PREFIX}/bin/some_opencl_kernel.cl
旁边的可执行文件。
如果你想复制一个文件夹的树与一些类型的文件:
# Copy all assets to resources file
INSTALL(DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/assets/ DESTINATION ${INSTALL_PATH}/assets
FILES_MATCHING PATTERN "*.dae" PATTERN "*.jpg")
如果你想要的所有文件复制文件夹,只是删除FILES_MATCHING模式。