本文最后更新于 2025-03-11T02:16:54+08:00
CMake
一个 OpenCV 的例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 @echo offset "ROOT_PATH=%~dp0"set "OPENCV_PATH=%ROOT_PATH% \Frame\Source\ThirdParty\opencv"echo [ opencv ] path : %OPENCV_PATH% cd %OPENCV_PATH% cmake -B build -D CMAKE_CONFIGURATION_TYPES="Release;Debug" -D OPENCV_DOWNLOAD_MIRROR_ID=gitcode -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF -D BUILD_opencv_apps=OFF -D BUILD_opencv_world=ON cmake --build build --target opencv_world --config Release cmake --build build --target opencv_world --config Debugecho .pause
%~dp0
当前 batch 文件的路径。
cmake -B build
配置阶段,会在当前目录下生成 build
文件夹,并在其中生成一系列 cmake 缓存。-D
之类的配置正是在这个阶段进行的,不过由于缓存的机制,只有在第一次 -B
的时候 -D
等配置才会生效。
任何时候都可以通过删除 build/CMakeCache.txt
或整个 build
文件夹来删除缓存,以便重新运行 -B
。
CMAKE_CONFIGURATION_TYPES
指定多配置生成器(如 VS,XCode,Ninja)上可用的构建类型,常见有 Debug
, Release
, RelWithDebInfo
和 MinSizeRel
。
相对于用于指定单配置生成器的构建类型的 CMAKE_BUILD_TYPE
。
cmake --build build
会使用 build 目录下的 CMake 缓存编译目标文件。
–target
用于指定要编译的目标,默认则编译所有目标。
–config
用于指定多配置生成器要编译的构建类型,对于单配置生成器会忽略该选项。
MSBuild
MSBuild 命令行参考
常用的 MSBuild 项目属性
在 windows 中调用 MSBuild 编译现成的 .sln。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 set "VSWHERE_PATH=%ProgramFiles(x86)% \Microsoft Visual Studio\Installer\vswhere.exe"for /f "usebackq tokens=*" %%i in (`"%VSWHERE_PATH% " -latest -requires Microsoft.Component.MSBuild -find MSBuild\**\Bin\MSBuild.exe`) do ( set "MSBUILD_PATH=%%i " )if defined MSBUILD_PATH ( echo MSBuild found at : %MSBUILD_PATH% ) else ( echo MSBuild not found. Please ensure Visual Studio is installed. exit /b 1 ) "%MSBUILD_PATH% " "%OPENCV_PATH% \build\OpenCV.sln" -p:Configuration=Debug;Platform=x64 "%MSBUILD_PATH% " "%OPENCV_PATH% \build\OpenCV.sln" -p:Configuration=Release;Platform=x64
vswhere
vswhere Find MSBuild
一个用于查找 Visual Studio 相关路径的软件,当安装 2017 或更高的 VS 版本时,vswhere 会被安装到 %ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe
。
-p
p:name
=value
,设置或重写指定项目级属性,多个属性之间用分号或逗号分隔。
PS: 我尝试过通过 -p:RuntimeLibrary=MultiThreaded
重写 /MT 选项,没有生效,网上信息也比较少。
https://stackoverflow.com/questions/38109726/how-to-set-runtime-library-mt-md-configuration-in-msbuild