我有两个包在同一个 catkin 工作区下
我有包 A 和包 B,其中 B 需要获取 A 的包含文件和库文件。
在CMakeLists.txt
A 中,我有
set(TEST_VAR "TEST")
configure_package_config_file(
fooConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/fooConfig.cmake
INSTALL_DESTINATION ...
PATH_VARS
TEST_VAR)
并定义fooConfig.cmake.in
如下
set(foo_VERSION 0.0.1)
@PACKAGE_INIT@
set_and_check(foo_TEST "@PACKAGE_TEST_VAR@")
check_required_components(foo)
使用上面的代码集,我应该可以使用find_package
B 中的关键字
find_package(foo REQUIRED)
在我期望的情况下,
foo_LIBRARIES
不应为空(自动填写),
foo_TEST
也不应为空,因为我通过提供PATH_VARS
但我看到了以下结果
${foo_FOUND} - TRUE
${foo_TEST} - EMPTY !!!
${foo_INCLUDE_DIRS} - .../build/foo/usr/include
${foo_LIBRARIES} - EMPTY !!!
为了更深入地了解该行为,我直接添加message
了生成fooConfig.cmake
和打印出来的foo_TEST
变量。但是,我注意到它是空的。
总而言之,我想了解
- 为什么
${foo_LIBRARIES}
没有正确设置 - 是否
${foo_TEST}
预期 B 的 CMakeLists.txt 内为空。 - 为什么
${foo_TEST}
里面不可用cmake.in
谢谢