我有一个简单的C++程序:
#include <iostream>
int main(int argc, char *argv[])
{
std::cout << "Hello Build Type!" << std::endl;
std::cin.get();
return 0;
}
我可以使用CMake命令:cmake --build .
构建它,没有任何问题。
CmakeLists.txt是这样的:
cmake_minimum_required(VERSION 3.5)
set(CMAKE_CONFIGURATION_TYPES DEBUG)
project (build_type CXX)
add_executable(cmake_examples_build_type main.cpp)
但是,当我将CMAKE_CONFIGURATION_TYPES
更改为RELEASE
时,使用cmake --build .
构建时会出现此错误。
建造工作启动2018年10月24日上午10:35:38 项目"C:\Users\ialkeilani\OneDrive -节点1上的Ushrauto\temp\cmake-examples-master\01-basic\F-build-type\build\ALL_BUILD.vcxproj“(默认目标)。 项目"C:\Users\ialkeilani\OneDrive - Ushrauto\temp\cmake-examples-master\01-basic\F-build-type\build\ALL_BUILD.vcxproj“(1)正在建设中 "C:\Users\ialkeilani\OneDrive -节点1(默认目标)上的Ushrauto\temp\cmake-examples-master\01-basic\F-build-type\build\ZERO_CHECK.vcxproj“(2)。 C:\Program (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.Cpp.Platform.targets(61,5):error MSB8013:该项目不包含Debug 32的配置和平台组合。C:\用户\ialkeilani\OneDrive- Ushrauto\temp\cmake-examples-master\01-basic\F-build-type\build\ZERO_CHECK.vcxproj完成了构建项目"C:\Users\ialkeilani\OneDrive - Ushrauto\temp\cmake-examples-master\01-basic\F-build-type\build\ZERO_CHECK.vcxproj“(默认目标) --失败。 完成构建项目"C:\Users\ialkeilani\OneDrive - Ushrauto\temp\cmake-examples-master\01-basic\F-build-type\build\ALL_BUILD.vcxproj“(默认目标)-失败。 构建失败。 "C:\Users\ialkeilani\OneDrive - Ushrauto\temp\cmake-examples-master\01-basic\F-build-type\build\ALL_BUILD.vcxproj“(默认目标) (1) -> "C:\Users\ialkeilani\OneDrive - Ushrauto\temp\cmake-examples-master\01-basic\F-build-type\build\ZERO_CHECK.vcxproj”(默认目标) (2) -> (PlatformPrepareForBuild目标) -> C:\Program (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.Cpp.Platform.targets(61,5):error MSB8013:该项目不包含Debug 32的配置和Platfor组合。用户\ialkeilani\OneDrive- Ushrauto\temp\cmake-examples-master\01-basic\F-build-type\build\ZERO_CHECK.vcxproj 0警告 1错误 过了00:00:00.18
此外,当我尝试使用下面的命令使用MSVC构建时:msbuild build_type.sln /p:configuration=release
构建完成没有任何问题。
有谁能告诉我为什么CMake没有问题,但却无法构建发行版配置?
运行2013和CMake 3.5.2
发布于 2019-01-05 12:27:29
Visual是一个“多配置”生成器,因此:
设置CMAKE_BUILD_TYPE
没有任何效果。您可以通过打开生成的解决方案来验证这一点:所有配置仍然可用。
设置CMAKE_CONFIGURATION_TYPES=Release
是正确的方法:在IDE中打开生成的解决方案只允许您选择"Release“。在中构建示例将运行得很好。
但是,在运行CMake时,在运行cmake --build .
时,似乎存在一个与相结合的错误,将命令更改为cmake --build . --config Release
将有效。这在CMake中似乎是一种回归,因为这曾经在某个时候起作用。在最近升级了构建环境之后,我自己也遇到了这个特定的问题。
顺便说一句,这似乎真的只发生在Visual中。我没有看到XCode存在这个问题,它也是一个“多配置”生成器。
发布于 2018-10-24 16:52:21
您应该使用下面的选项而不是CMAKE_CONFIGURATION_TYPES:
CMAKE_BUILD_TYPE
这可以通过cmake设置:
cmake -DCMAKE_BUILD_TYPE=Debug <cmake-source-tree>
或使用ccmake:
ccmake <cmake-source-tree>
请注意,您需要先配置(如上面所示),然后执行构建步骤。这就是:
cmake -DCMAKE_BUILD_TYPE=<Release|Debug> <cmake-source-tree>
make
。如果您在项目路径中进行构建,但考虑使用CMake建议的无源构建。
https://stackoverflow.com/questions/52972823
复制相似问题