CMake的find_program / find_path / find_ *和源代码构建

find_*函数的正确解释是在源代码中内置(并因此可用)的库/路径/所要查找的任何函数?

我特别要遵循flatbuffer instructions

  

如果要在已经使用CMake的项目中使用flatBuffers,则一种更健壮和灵活的方法是直接将flatBuffers构建为该项目的一部分。这是通过使flatBuffers源代码可用于主版本并使用CMake的add_subdirectory()命令将其添加来完成的。

     

假设您将flatBuffers源代码放在目录${flaTBUFFERS_SRC_DIR}中。要将其构建为项目的一部分,请将以下代码添加到CMakeLists.txt文件:

# Add flatBuffers directly to our build. This defines the `flatbuffers` target.
add_subdirectory(${flaTBUFFERS_SRC_DIR}
                 ${CMAKE_CURRENT_BINARY_DIR}/flatbuffers-build
                 EXCLUDE_FROM_ALL)
# Now simply link against flatbuffers as needed to your already declared target.
# The flatbuffers target carry header search path automatically if CMake > 2.8.11.
target_link_libraries(own_project_target PRIVATE flatbuffers)

它工作得很好,但是要生成c ++代码,我需要调用上一步中构建的flatc可执行文件。为了不手动执行此操作,我想利用其代码库中定义的现有cmake函数-CMake/FindFlatBuffers.cmake,但问题在于,他们在文件的开头就试图查找flatc可执行文件:

find_program(flaTBUFFERS_flaTC_EXECUTABLE NAMES flatc)
find_path(flaTBUFFERS_INCLUDE_DIR NAMES flatbuffers/flatbuffers.h)

这当然会失败,因为我禁用了平面缓冲区的安装。

有一个简单的解决方案吗?

xj0605 回答:CMake的find_program / find_path / find_ *和源代码构建

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3122213.html

大家都在问