- cmake -G ""指定Generator
msbuild /m:8
指定8线程编译msbuild /property:Configuration=Release
指定构建Release版本msbuild /wd<n>
禁用n号警告CMakeLists.txt
中添加下面的代码来使用utf-8编码(默认使用Unicode编码)。#add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/source-charset:utf-8>") add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>") add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
msbuild /std:c++17
指定C++17标准。msbuild /Zc:__cplusplus
来传递必要选项给Qt6。
构建实例
使用cmake + msbuild构建并安装(默认使用的是Debug版本,链接库后面会带d,所以更喜欢Release版本):
mkdir build && cd build
cmake .. -D CMAKE_INSTALL_PREFIX -D CMAKE_BUILD_TYPE=Release#这里的Build type指定了好像没用
msbuild.exe ALL_BUILD.vcxproj /property:Configuration=Release #似乎这里指定的Release才有用
msbuid.exe INSTALL.vcxproj /property:Configuration=Release
# 安装时还要再指定一遍,不然还会自动编译Debug给你安装,挺离谱的。。。
错误
CMake配置OpenCV错误
Invalid character escape '\U'. Call Stack (most recent call first):
原因是-DOPENCV_EXTRA_MODULES=
直接复制了Windows的路径,Windows用的是\
来分隔路径字符串,CMake不认,把它改成\\
或者/
就好了,我赣!
Qt链接错误
在链接到Qt6时一下子报了一千多个链接错误,人都傻了,头文件、链接库都添加了。
最后发现是之前用MinGW的库,忘记改了:
set(CMAKE_PREFIX_PATH D:/Qt/6.3.2/mingw_64
K:/Vulkan
K:/fastdeploy_cpu
k:/OpenCV/opencv/build
...
)
把mingw_64
换成msvc2019_64
就好了,Linux哪来这种烦恼。。。
同样的代码,msvc编译还比gcc慢好多。