Я использую Visual Studio
для компиляции проекта C++
, используя CMake
в качестве системы сборки.
Кроме того, я ссылаюсь на библиотеку Boost
.Однако выходной исполняемый файл не будет запущен, если в переменной среды PATH
не найдены следующие Boost
DLL
s: boost_filesystem-vc141-mt-x64-1_69.dll
и boost_iostreams-vc141-mt-x64-1_69.dll
.
Согласно документации , я попытался использовать /MT
(«Заставляет приложение использовать многопоточную, статическую версию библиотеки времени выполнения»), а также /MD
(«Заставляет приложение использовать многопоточный и DLL-специфическая версия библиотеки времени выполнения "), но помимо влияния на размер файла, зависимость DLL
от Boost
не изменилась.
Я также указал следующие CMake
переменные:
set(BOOST_USE_STATIC_LIBS ON)
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME OFF)
Это также не вызывало статического связывания с библиотеками Boost
.Я хочу сгенерировать исполняемый файл, который динамически не зависит от Boost
, а только от основных C++
библиотек времени выполнения, чтобы любая другая машина могла запустить его без доставки Boost
или каких-либо Boost
DLL
s.Вполне нормально, если размер файла немного увеличивается.
Добавление следующего определения препроцессора к main.cpp
также не работает:
#define BOOST_ALL_NO_LIB 1
Как можноЯ действительно строю автономный исполняемый файл?