【问题标题】:cpp files are not generated for capnp_generate_cpp()不为 capnp_generate_cpp() 生成 cpp 文件
【发布时间】:2019-02-12 19:47:54
【问题描述】:

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

【问题讨论】:

  • 将一些MESSAGE() 语句添加到CapnProtoMacros.cmake 以打印出值,以便查看哪里出错了。
  • @metal 我还需要写.cmake 文件吗?我在哪里可以找到CapnProtoMacros.cmake?我只有一个cmake.Lists 文件

标签: cmake capnproto


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-05
    • 1970-01-01
    • 2020-09-26
    • 2010-12-29
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    • 2023-03-25
    相关资源
    最近更新 更多