c - 使用 CMake 安装附加文件

标签 c cmake opencl

我正在尝试提供一些带有一些可执行文件的“源”文件。我想知道是否有办法将这些源文件复制到构建目录(从源目录),然后使用 CMake 复制到安装目录。

我在这里更具体的目标是将我编写的 OpenCL 内核包含在它们自己的 *.cl 文件中。

例子:

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与可执行文件一起。

关于c - 使用 CMake 安装附加文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15694347/

相关文章:

c - 运行 shellcode 时出现段错误

c - C中AVR的舍入数字

c++ - 如何在 CMake 中为 Visual Studio 生成器添加预编译头文件

c++ - Mac 上的自制 GLFW/GLEW

c++ - 如何在主机 C++ 函数之间传递 cl::Buffer 对象?

c - 如何在多线程中使用 printf()

dll - 在 cmake 构建中使用外部 DLL

python - PyOpenCL 索引问题

macos - Aparapi 添加示例

c - Jpeglib 代码给出乱码输出,甚至是捆绑的示例代码?