在 CMake 中,您不会将项目链接到其他项目。相反,您将目标链接到其他目标。
CMake 目标仅通过几个命令(例如add_library
、add_executable
和add_custom_target
)创建。该project
命令不会创建 CMake 目标,它只是声明一个项目。
此外,该target_link_libraries()
命令在作用域关键字之后接受以下参数:
- 库目标名称
- 库文件的完整路径
- 一个简单的库名称
- 链接标志
- 生成器表达式
- 一个
debug
, optimized
, 或general
关键字
它不接受项目名称,但如果您输入项目名称,它会在您的系统上查找具有该名称的 CMake目标或库文件。
要找到我认为您要问的问题的根源:如果您提供的链接项名称target_link_libraries()
与现有目标不匹配,则该命令将简单地搜索该名称的库文件。
要在尝试链接之前检查目标是否存在,您可以执行以下操作:
if (TARGET StackOverflow)
target_link_libraries(Stuff PUBLIC StackOverflow)
endif()
target_link_libraries()
如果您想了解有关此命令功能的更多详细信息,我建议您阅读链接的文档。