cmake 错误 当文件由EXEC_PROGRAM生成时找不到源文件
cmake error Cannot find source file when file is generated by EXEC_PROGRAM
我想在我的项目中使用 protobuf 而不安装,所以我从其他人那里复制库和标头,并创建一个 FindProtobuf.cmake,其中包含名为 protobuf_generate_cpp 的函数,它按我预期生成源代码文件,但add_library找不到文件,这是错误:
Cannot find source file:
build/basic_types.pb.h
Tried extensions .c .C .c++ .cc .cpp .cxx .cu .m .M .mm .h .hh .h++ .hm
.hpp .hxx .in .txx
我在 Ubuntu 18.04.1 中使用 cmake 3.13.4
这些文件完全在构建目录中生成,并且可以通过以下方式显示
message(STATUS "header file: " ${PROTO_HDRS})
这是protobuf_generate_cpp的功能:
function(protobuf_generate_cpp PROTO_SRCS PROTO_HDRS)
set(SRCS_)
set(HDRS_)
math(EXPR idx_max "${ARGC}-1")
foreach(idx RANGE 2 ${idx_max})
set(FILE_PATH ${ARGV${idx}})
if(NOT EXISTS ${FILE_PATH})
set(FILE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${FILE_PATH}")
if(NOT EXISTS ${FILE_PATH})
message(FATAL_ERROR "File ${FILE_PATH} is not exists!")
endif()
endif()
get_filename_component(FILE_NAME ${FILE_PATH} NAME_WE)
get_filename_component(ABSOLUTE_FILE_NAME ${FILE_PATH} ABSOLUTE)
get_filename_component(FILE_PATH ${FILE_PATH} PATH)
EXEC_PROGRAM("protoc --proto_path ${FILE_PATH} --cpp_out ${CMAKE_BINARY_DIR} ${ABSOLUTE_FILE_NAME}")
list(APPEND SRCS_ "${CMAKE_BINARY_DIR}/${FILE_NAME}.pb.cc ")
list(APPEND HDRS_ "${CMAKE_BINARY_DIR}/${FILE_NAME}.pb.h ")
endforeach()
set(PROTO_SRCS ${SRCS_} PARENT_SCOPE)
set(PROTO_HDRS ${HDRS_} PARENT_SCOPE)
endfunction(protobuf_generate_cpp)
protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS
basic_types.proto
calibration_parameters.proto
)
add_library(proto STATIC
${PROTO_HDRS}
${PROTO_SRCS}
)
add_library(proto STATIC
${PROTO_HDRS}
${PROTO_SRCS}
)
只能包含源文件。
您可以在下面尝试此代码,
add_library(proto STATIC
${PROTO_SRCS}
)
target_include_directory(proto 【header's dir】)
相关文章:
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 找不到QtResource文件中的文件
- VC++本机单元测试,找不到调试符号
- CMake 看不到源文件,找不到 #includes
- Eclipse GDB 找不到源文件
- cmake 错误 当文件由EXEC_PROGRAM生成时找不到源文件
- CMake 找不到源文件,即使它位于正确的位置
- 制作:没有实现目标的规则 - 找不到源文件
- GDB 找不到源文件
- 找不到 SDK 源文件
- gdb 找不到由 clang++ 编译的源文件
- 为什么LLDB>v320.4.160再也找不到我的源文件了?
- VS2010 找不到源文件
- 为什么 scons 找不到我的项目的源文件?
- 为什么GDB找不到源文件
- GDB找不到源文件