强制CMake寻找x64位库而不是x32

时间:2018-09-06 14:41:13

标签: c++ boost cmake

因此,我一直在stackoverflow和其他一些论坛中四处寻找如何强制CMake查找x64库而不是x32,这并没有太大帮助。

当我这样做时:

find_package(Boost
    1.67.0
    COMPONENTS
        atomic
    REQUIRED
)

由于某些原因,CMake会寻找x32库而不是x64库,但找不到它们。我通过在cmake命令中添加此选项来知道这一点:

-DBoost_DEBUG=ON

哪个显示了这个(它显示的当然比我发布的要多,但是我发布了重要的行):

_boost_LIBRARY_SEARCH_DIRS_RELEASE = C:/develop/libraries/boost/1.67.0/x64-vc141/Release/lib
Searching for ATOMIC_LIBRARY_RELEASE: boost_atomic-vc141-mt-x32-1_67;boost_atomic-vc141-mt;boost_atomic-vc140-mt-x32-1_67;boost_atomic-vc140-mt;boost_atomic-mt-x32-1_67;boost_atomic-mt;boost_atomic

但是不要寻找这个:

boost_atomic-vc141-mt-x32-1_67

很明显为什么找不到它。
我希望它寻找这个:

boost_atomic-vc141-mt-x64-1_67

我想念什么?我想添加一些额外的CMake配置,以使CMake理解我正在为x64体系结构使用boost吗?

我什至尝试通过以下方式以手动方式在x64模式下启动Developer Command Prompt for VS 17

call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64

预先感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

当您用CMake生成任何东西时,您应该指定一个生成器,除非默认的生成器满足您的需求。在您的情况下,默认值(无论它是什么)看起来都不适合您,因此您应按以下方式提供它(对于MSVS 2015):

cmake -G "Visual Studio 14 2015 Win64"

请注意,生成器中的体系结构对于搜索很重要。稍后,您可以使用CMake --build进行构建,但是仍然必须生成一些使用x64编译器的 make 文件。