问题描述
我正在尝试将我的 C++ 程序与静态 Boost::program_options 和动态 Boost::log 库链接起来。 这是我的 CMakeList.txt 文件:
project(test)
add_executable(testprog "main.cpp")
add_deFinitions(-DBOOST_ALL_NO_LIB)
set(Boost_USE_STATIC_LIBS ON)
find_package(Boost COMPONENTS program_options)
target_link_libraries(testprog PRIVATE Boost::program_options)
set(Boost_USE_STATIC_LIBS OFF)
add_deFinitions(-DBOOST_LOG_DYN_LINK)
find_package(Boost COMPONENTS log)
target_link_libraries(testprog PRIVATE Boost::log)
和我的 main.cpp 文件:
#define BOOST_ALL_NO_LIB
#include <iostream>
#include <string>
#include <boost/program_options.hpp>
#include <boost/log/trivial.hpp>
int main(int argc,char* argv[])
{
namespace po = boost::program_options;
po::options_description desc("allowed arguments");
desc.add_options()("log",po::value<std::string>(),"log level");
po::variables_map options;
po::store(po::command_line_parser(argc,argv).options(desc).run(),options);
po::notify(options);
if (options.count("log")) {
std::cout << "log level: " << options["log"].as<std::string>() << std::endl;
}
BOOST_LOG_TRIVIAL(info) << "test message";
return 0;
}
我收到您的计算机缺少boost_filesystem.dll错误。
如果我去掉 set(Boost_USE_STATIC_LIBS OFF)
行,我会得到未解析的外部符号 boost::log...。看起来 Boost_USE_STATIC_LIBS 在配置期间只能设置一次,但我找不到告诉 cmake 拆分静态/动态库的方法...
谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)