Как мне использовать CMake для создания файла ispc?

У меня простой проект. Он содержит два файла:

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 скомпилировать kernel.ispc с использованием ispc компилятор, и как я могу получить cmake, чтобы затем связать его в my_program?

2 ответа

Решение

Как мне заставить cmake скомпилировать kernel.ispc с помощью компилятора 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)

Я знаю, что это старый вопрос, но CMAKE 3.19 теперь имеет встроенную поддержку ISPC.

Другие вопросы по тегам