【发布时间】:2020-05-24 17:00:07
【问题描述】:
我正在使用包管理器vcpkg 通过vcpkg install boost:x64-windows-static 安装(静态)Boost 库。
此外,我使用CMake 作为构建系统,并通过-DCMAKE_TOOLCHAIN_FILE CMake 命令将C:\vcpkg\scripts\buildsystems\vcpkg.cmake 传递给CMake。
在我的 CMakeLists.txt 中,我强制使用静态 Boost 库:
set(Boost_USE_STATIC_LIBS ON)
find_package(Boost COMPONENTS filesystem iostreams REQUIRED)
if (Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
link_directories(${Boost_LIBRARY_DIRS})
endif ()
# ...
target_link_libraries(${PROJECT_NAME} ${Boost_LIBRARIES})
但是,Visual Studio 仍然试图为我的 Boost 库查找错误的文件路径:
Error 'C:/vcpkg/installed/x64-windows/lib/boost_filesystem-vc140-mt.lib', needed by 'MyProject.exe', missing and no known rule to make it
如果我安装动态的Boost 库,它将构建良好,因为这是Visual Studio 的外观。但是,我想在我的构建中使用静态库,以便所有 DLLs 都“合并”到最终的 EXE。
我怎样才能做到这一点?
【问题讨论】:
-
如果路径
C:/vcpkg/installed/x64-windows/lib/boost_filesystem-vc140-mt.lib错误,那么您机器上静态库的正确路径是什么?根据 Boost 库命名约定,boost_filesystem-vc140-mt.lib实际上是一个静态库文件。 -
@Tsyvarev:正确的路径是
C:/vcpkg/installed/x64-windows-static/lib/boost_filesystem-vc140-mt.lib。这就是我安装静态库时vcpkg的设置方式。
标签: c++ visual-studio boost cmake vcpkg