因此,我一直在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
预先感谢您的帮助!
答案 0 :(得分:3)
当您用CMake生成任何东西时,您应该指定一个生成器,除非默认的生成器满足您的需求。在您的情况下,默认值(无论它是什么)看起来都不适合您,因此您应按以下方式提供它(对于MSVS 2015):
cmake -G "Visual Studio 14 2015 Win64"
请注意,生成器中的体系结构对于搜索很重要。稍后,您可以使用CMake --build进行构建,但是仍然必须生成一些使用x64编译器的 make 文件。