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

CMake已找到Boost但链接失败:Program_Options组件链接问题求助

链接Boost 1.81 Program_Options组件时出现链接错误

我正在按照Boost官网的Program_Options教程实践,仅尝试链接program_options组件。已从GitHub拉取并编译了Boost 1.81,CMake能找到Boost库但无法完成链接。

相关代码文件

intensity.cpp

#include <iostream>
#include <boost/program_options.hpp>

namespace po = boost::program_options;

int main(int ac, char *av[]){
    po::options_description desc("allowed options");
    desc.add_options()
        ("help", "--intesity: set intesity levels")
        ("intensity", po::value<int>(), "set intensity level")
    ;
    po::variables_map vm;
    po::store(po::parse_command_line(ac, av, desc), vm);
    po::notify(vm);

    if(vm.count("help")) {
        std::cout << desc << "\n";
        return 1;
    }

    if(vm.count("intensity")) {
        std::cout << "intensity level set to "
            << vm["intensity"].as<int>() << "\n";
    } else {
        std::cout << "intesity was not set\n";
    }

    return 0;
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.15)

project(Intensity VERSION 1.0)

set(CMAKE_CXX_COMPILER clang)

set(BOOST_ROOT "/Users/nabiel.kandiel/code/thirdparty/boost_1_81_0")
set(Boost_USE_STATIC_LIBS OFF)
set(BOOST_USE_MULTITHREADED ON)
set(BOOST_USE_STATIC_RUNTIME OFF)
find_package(Boost 1.81 REQUIRED COMPONENTS program_options)

add_executable(intensity intensity.cpp)
target_link_libraries(intensity Boost::program_options)

CMake配置输出

NKandiel-REMM22:build nabiel.kandiel$ cmake ../
-- The C compiler identification is AppleClang 14.0.0.14000029
-- The CXX compiler identification is AppleClang 14.0.0.14000029
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Boost: /opt/homebrew/lib/cmake/Boost-1.81.0/BoostConfig.cmake (found suitable version "1.81.0", minimum required is "1.81") found components: program_options 
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/nabiel.kandiel/code/imageProc/build

构建错误输出

NKandiel-REMM22:build nabiel.kandiel$ cmake --build .
[ 50%] Building CXX object CMakeFiles/intensity.dir/intensity.cpp.o
[100%] Linking CXX executable intensity
Undefined symbols for architecture arm64:
  "std::logic_error::what() const", referenced from:
      vtable for boost::program_options::error in intensity.cpp.o
  "std::runtime_error::what() const", referenced from:
      vtable for boost::wrapexcept<boost::bad_function_call> in intensity.cpp.o
      vtable for boost::bad_function_call in intensity.cpp.o
  "std::__1::__vector_base_common<true>::__throw_length_error() const", referenced
.....
      std::__1::allocator<boost::program_options::basic_option<char> >::deallocate(boost::program_options::basic_option<char>*, unsigned long) in intensity.cpp.o
      ...
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [intensity] Error 1
make[1]: *** [CMakeFiles/intensity.dir/all] Error 2
make: *** [all] Error 2

我尝试过多种网上找到的CMakeLists.txt配置,但均无法解决问题,恳请帮助。


内容的提问来源于stack exchange,提问作者Nabiel Kandiel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 14:45:34