Файлы cpp не создаются для capnp_generate_cpp()

У меня есть файл temp.capnp, где находится мой файл cmake

find_package(CapnProto CONFIG REQUIRED)
include_directories(${CAPNP_INCLUDE_DIRS})
add_definitions(${CAPNP_DEFINITIONS})

set(CAPNPC_SRC_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}" CACHE STRING "" FORCE)
set(CAPNPC_OUTPUT_DIR "." CACHE STRING "" FORCE)
file(MAKE_DIRECTORY "${CAPNPC_OUTPUT_DIR}")

capnp_generate_cpp(CAPNP_SOURCES CAPNP_HEADERS temp.capnp)

при этом он не генерирует соответствующие файлы для capnp, он также не выдает никакой ошибки. чего мне здесь не хватает?

1 ответ

Решение

Макрос capnp_generate_cpp генерирует файлы в виде add_custom_commandто есть ничего не выполняется, если какая-то цель не зависит от этих файлов.

Наиболее простая форма такой зависимости создается add_executable:

# Create rules for generate source and header files.
capnp_generate_cpp(CAPNP_SOURCES CAPNP_HEADERS temp.capnp)
# Consume these files for executable.
add_executable(foo main.cpp ${CAPNP_SOURCES} ${CAPNP_HEADERS})

Кстати, такой пример представлен в описании для скрипта CapnProtoConfig.cmake, который обрабатывается с помощью find_package(CapnProto), (Не забывайте о других строках в этом примере для успешной сборки исполняемого файла).

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