C++ 强制CMake查找x64位库而不是x32位库

C++ 强制CMake查找x64位库而不是x32位库,c++,boost,cmake,C++,Boost,Cmake,因此,我一直在stackoverflow和其他一些论坛上寻找如何迫使CMake寻找x64库而不是x32库,但这并没有带来多大帮助 当我这样做时: find_package(Boost 1.67.0 COMPONENTS atomic REQUIRED ) 出于某种原因,CMake查找x32库而不是x64库,但未能找到它们。我通过在cmake命令中添加此选项了解这一点: -DBoost_DEBUG=ON 这向我展示了这一点(当然,这比我发布的内容要多,但

因此,我一直在stackoverflow和其他一些论坛上寻找如何迫使CMake寻找x64库而不是x32库,但这并没有带来多大帮助

当我这样做时:

find_package(Boost
    1.67.0
    COMPONENTS
        atomic
    REQUIRED
)
出于某种原因,CMake查找x32库而不是x64库,但未能找到它们。我通过在cmake命令中添加此选项了解这一点:

-DBoost_DEBUG=ON
这向我展示了这一点(当然,这比我发布的内容要多,但我发布了重要的内容):

但不是寻找这个:

boost_atomic-vc141-mt-x32-1_67
boost_atomic-vc141-mt-x64-1_67
这就是为什么它找不到它的原因。
我想让它看看这个:

boost_atomic-vc141-mt-x32-1_67
boost_atomic-vc141-mt-x64-1_67
我错过了什么?我想添加一些额外的CMake配置,以便使CMake了解我正在使用boost for x64体系结构吗

我甚至尝试在x64模式下手动启动VS17的开发者命令提示符,方法是调用:

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

提前感谢您的帮助

使用CMake生成任何内容时,应指定一个生成器,除非默认生成器满足您的需要。看起来在您的情况下,默认设置(无论是什么)不适用于您,因此您应该这样提供它(适用于MSVS 2015):


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

你在生成什么?VisualStudio解决方案?它是一个库项目,不试图生成VS解决方案,只需生成文件,以便我可以在使用cmake--build命令之后构建它。下面是我的generate命令:
cmake-DBoost\u DEBUG=ON-DCMAKE\u INSTALL\u PREFIX=C:\tmpppp-DCMAKE\u BUILD\u TYPE=Release..
Oh wow…尽管它实际工作起来很奇怪!我想CMake应该有一些选项,明确定义架构类型,但我想一切都发生在幕后,这是一个伟大的解决方案!非常感谢你的帮助@吉拉德里奇,很可能你没有完全理解什么是CMake,什么不是。这是一个简单的生成器工具,其目标是使用一些通用的make文件语言,允许使用它生成其他make文件。例如,您编写一个CMake文件,然后从中生成Visual Studio、XCode、Borland等项目。CMake——build在CMake中是一个相对较新的东西,它只使用一些外部工具来构建项目(在MSV中是MSBuild)。它不知道如何构建任何东西,它只是授权。谢谢你的支持!谢谢你。但我已经知道这些了。我正在进行的项目,使用CMake的一些高级功能,正如你所说的“没那么简单”,我正在慢慢了解。我知道VS solution generator,直到现在我才使用NMake JOM generator,但我从来不知道它有Win64选项,对于我正在进行的用x64构建库的项目来说,这是一件新鲜事,这就是为什么我没有忽略它。多亏了你,我才发现了这一点。说到这一点,你有没有任何想法,如果有可能使用JOM生成器做同样的事情(x64体系结构)?因为有了JOM,我可以指定用于构建项目的内核数量。@Giladrich,从已建立x64 env的控制台运行cmake,并选择正确的生成器“NMake Makefiles JOM”,应该可以满足您的需要。刚刚打开vanilla cmd,在那里运行
vcvvars64.bat
,然后运行
cmake-G“NMake Makefiles”
,它选择了正确的x64编译器,应该足以检测正确的boost版本。