1

我的 cmake 文件有 temp.capnp 文件

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 生成相应的文件,也不会给出任何错误。我在这里想念什么?

4

1 回答 1

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). (不要忘记此示例中的其他行以使可执行文件成功构建)。

于 2019-02-12T21:51:42.877 回答