Файлы 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)
, (Не забывайте о других строках в этом примере для успешной сборки исполняемого файла).