You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMake报错:无法为非本项目构建的target 'conan_test'指定链接库

解决CMake链接mongocxx时的目标未定义错误
  • 错误原因:target_link_libraries语句写在了add_executable之前,此时${PROJECT_NAME}(即conan_test)这个可执行目标还没被CMake创建,所以触发"目标未被本项目构建"的错误。CMake规则要求必须先创建目标,再为其添加链接依赖。

  • 修正后的CMakeLists.txt:

cmake_minimum_required(VERSION 3.27)
project(conan_test)

set(CMAKE_CXX_STANDARD 17)

# 先创建可执行文件目标
add_executable(${PROJECT_NAME} main.cpp)

# 查找mongocxx库,REQUIRED确保找不到库时直接报错
find_package(mongocxx REQUIRED)

# 为已创建的目标链接mongocxx静态库,PRIVATE表示依赖仅用于本目标内部
target_link_libraries(${PROJECT_NAME} PRIVATE mongo::mongocxx_static)
  • main.cpp示例代码:
#include <iostream>
#include <mongocxx/client.hpp>
#include <mongocxx/instance.hpp>

int main() {
    // 初始化mongocxx库实例
    mongocxx::instance instance{};
    // 连接本地MongoDB服务
    mongocxx::client client{mongocxx::uri{}};

    auto test_db = client["test_database"];
    std::cout << "成功连接MongoDB" << std::endl;

    return 0;
}
  • 额外检查项:
    • 确认CLion的Conan插件已正确配置macOS下的编译profile,确保mongocxx库的CMake配置文件能被find_package找到。
    • 如果之前Conan安装mongocxx时指定了特定版本,可在find_package中加入版本约束(如find_package(mongocxx 3.7 REQUIRED))。

内容的提问来源于stack exchange,提问作者David Lev Gabbay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 21:49:50