【问题标题】:How do I use CMake to build an ispc file?如何使用 CMake 构建 ispc 文件?
【发布时间】:2017-02-14 20:17:01
【问题描述】:

我有一个简单的项目。它包含两个文件:

main.c
kernel.ispc

(ispc文件是https://ispc.github.io/的来源)

要手动编译我将使用的文件:

ispc --target=sse2 kernel.ispc -o kernel.o
gcc -c main.c -o main.o
gcc main.o kernel.o -o my_program

所以对于我的 cmake 文件,它最初看起来像

project(my_program)
add_executable(my_program main.c)

但它当然不会链接,因为它缺少 kernel.o 中的符号

所以问题是: 如何让 cmake 使用 ispc 编译器编译 kernel.ispc,以及如何让 cmake 然后将其链接到 my_program

【问题讨论】:

  • add_custom_command 有什么问题?
  • 我找不到一个示例来说明如何在这种情况下使用它。 1)如何使用自定义命令将任何 ispc 文件构建为 .o 文件? 2)然后如何使可执行文件在链接时依赖并使用这些 .o 文件?

标签: c cmake ispc


【解决方案1】:

如何让 cmake 使用 ispc 编译器编译 kernel.ispc?

只需使用add_custom_command:

add_custom_command(OUTPUT kernel.o
                   COMMAND ispc --target=sse2 ${CMAKE_SOURCE_DIR}/kernel.ispc -o kernel.o
                   DEPENDS kernel.ispc)

如何让 cmake 然后将其链接到 my_program

在 CMake 看来,.o 文件只是可执行文件的另一个来源:

add_executable(my_program main.c kernel.o)

【讨论】:

  • 是的,这行得通。只需要将命令行更改为:COMMAND ispc --target=sse2 ${CMAKE_SOURCE_DIR}\kernel.ispc -o kernel.o,否则找不到该文件。
  • 是的,COMMAND 是在二进制目录中执行的,所以在源目录中找不到文件。我已经确定了答案。
【解决方案2】:

我知道这是一个老问题,但 CMAKE 3.19 现在已经内置了对 ISPC 的支持。

【讨论】:

    猜你喜欢
    • 2022-01-28
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    • 2020-11-21
    • 2020-03-14
    • 2016-04-24
    相关资源
    最近更新 更多