我正在使用Visual Studio
作为构建系统,使用C++
来编译CMake
项目。
此外,我正在针对Boost
库进行链接。但是,如果在Boost
环境变量中找不到以下DLL
PATH
:boost_filesystem-vc141-mt-x64-1_69.dll
和boost_iostreams-vc141-mt-x64-1_69.dll
,则输出可执行文件将不会运行。
According to the documentation,我尝试使用/MT
(“使应用程序使用运行时库的多线程静态版本”)和/MD
(“导致应用程序以使用运行时库的特定于多线程和DLL的版本”)编译标志,但除了影响文件大小外,对DLL
的{{1}}依赖性也没有改变。
我还指定了以下Boost
变量:
CMake
这也没有强制针对set(BOOST_USE_STATIC_LIBS ON)
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME OFF)
库的静态链接。我想生成一个不动态依赖于Boost
而是仅依赖于核心Boost
运行时库的可执行文件,以便任何其他计算机都可以运行它而无需交付C++
或任何Boost
Boost
个。如果文件大小增加很多完全没问题。
Adding the following preprocessor define to main.cpp
也不起作用:
DLL
我该如何真正构建独立的可执行文件?
答案 0 :(得分:0)
事实证明,我只是拼错了设置Boost
才能使用静态库:
set(Boost_USE_STATIC_LIBS ON)
CMake
变量区分大小写,因此用大写字母拼写Boost
无效。
预编译的Windows
二进制文件已经包含了所需的所有内容,因此,如果您只想链接静态库,则无需进行编译。