CMake 目标文件向链接库添加奇怪的后缀
CMake targets file adds weird suffix to linked libraries
我有一个项目 Foo
link 的库 curl
、threads
和 jsoncpp
。我构建 Foo
并生成一个 FooTargets.cmake
目标文件,我可以在我的项目 Bar
到 link 中使用它(使用 find_package(Foo REQUIRED)
然后 Foo::Foo
).
现在这个 FooTargets.cmake
以一种奇怪的方式 links curl
和 threads
:
INTERFACE_LINK_LIBRARIES "$<LINK_ONLY:CURL::libcurl::@<0x56344f65d140>>;
$<LINK_ONLY:Threads::Threads::@<0x56344f65d140>>;$<LINK_ONLY:JsonCpp::JsonCpp>;
即出于某种原因,它添加了这个奇怪的 @<0x56344f65d140>
。
但是,在配置项目 Bar
时,出现以下错误:
CMake Error at bar/CMakeLists.txt:13 (add_executable):
Target "bar" links to target "CURL::libcurl::@<0x55c57ad49530>"
but the target was not found. Perhaps a find_package() call is missing for
an IMPORTED target, or an ALIAS target is missing?
CMake Error at bar/CMakeLists.txt:13 (add_executable):
Target "bar" links to target "Threads::Threads::@<0x55c57ad49530>"
but the target was not found. Perhaps a find_package() call is missing for
an IMPORTED target, or an ALIAS target is missing?
请注意,当 运行 在我的 CI 上执行相同的步骤时,似乎就可以了。另外,如果我手动编辑 FooTargets.cmake
并删除 @<0x55c57ad49530>
,它工作正常。
为什么要附加这个 @<0x55c57ad49530>
,例如JsonCpp
没有?
这发生在 CMake 3.16.3 版中。较新版本的 CMake 似乎没有这个问题,这解释了为什么 CI 没问题。
我有一个项目 Foo
link 的库 curl
、threads
和 jsoncpp
。我构建 Foo
并生成一个 FooTargets.cmake
目标文件,我可以在我的项目 Bar
到 link 中使用它(使用 find_package(Foo REQUIRED)
然后 Foo::Foo
).
现在这个 FooTargets.cmake
以一种奇怪的方式 links curl
和 threads
:
INTERFACE_LINK_LIBRARIES "$<LINK_ONLY:CURL::libcurl::@<0x56344f65d140>>;
$<LINK_ONLY:Threads::Threads::@<0x56344f65d140>>;$<LINK_ONLY:JsonCpp::JsonCpp>;
即出于某种原因,它添加了这个奇怪的 @<0x56344f65d140>
。
但是,在配置项目 Bar
时,出现以下错误:
CMake Error at bar/CMakeLists.txt:13 (add_executable):
Target "bar" links to target "CURL::libcurl::@<0x55c57ad49530>"
but the target was not found. Perhaps a find_package() call is missing for
an IMPORTED target, or an ALIAS target is missing?
CMake Error at bar/CMakeLists.txt:13 (add_executable):
Target "bar" links to target "Threads::Threads::@<0x55c57ad49530>"
but the target was not found. Perhaps a find_package() call is missing for
an IMPORTED target, or an ALIAS target is missing?
请注意,当 运行 在我的 CI 上执行相同的步骤时,似乎就可以了。另外,如果我手动编辑 FooTargets.cmake
并删除 @<0x55c57ad49530>
,它工作正常。
为什么要附加这个 @<0x55c57ad49530>
,例如JsonCpp
没有?
这发生在 CMake 3.16.3 版中。较新版本的 CMake 似乎没有这个问题,这解释了为什么 CI 没问题。