c++ cmake -D< var>:< type>=< value>参数“-D”的含义

332nm8kg  于 2023-01-03  发布在  其他
关注(0)|答案(3)|浏览(132)

我正在尝试使用cmake来安装opencv,在opencv的说明页面中,我发现了以下示例:

cd ~/opencv
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..

据我所知,我应该使用cmake在我创建的新目录中生成Makefile,在这个例子中应该是~/opencv/release,但是我不太理解最后一行,在cmake帮助中,我发现:

cmake -D <var>:<type>=<value> = create a cmake cache entry

是什么意思?尤其是这部分:"<var>:<type>=<value>",我不明白为什么示例给出"CMAKE_BUILD_TYPE=RELEASE""CMAKE_INSTALL_PREFIX=/usr/local .."
非常感谢您的帮助!

x6yk4ghg

x6yk4ghg1#

来自CMake文档:

  • -D:=:创建一个cmake缓存条目。

当cmake第一次在一个空的构建树中运行时,它会创建一个CMakeCache.txt文件,并使用项目的自定义设置填充该文件。此选项可用于指定一个优先于项目默认值的设置。此选项可根据需要为任意多的缓存条目重复。
:<type>可被视为可选。

xqk2d5yq

xqk2d5yq2#

也许你可以试试:

cd ~/opencv
mkdir release
cd release
cmake -D'CMAKE_BUILD_TYPE=RELEASE' -D'CMAKE_INSTALL_PREFIX=/usr/local'

只需在参数周围使用' ',并且不要在-D和'之间留下任何空白,它就可以工作。
当我用-D参数配置OpenCV时遇到了一些问题。
而且我认为-D选项只是改变了编译和安装pkg的一些默认参数。
正如您所推断的,CMAKE_BUILD_TYPE=RELEASE表示您希望构建opencv包的“Release”版本,而CMAKE_INSTALL_PREFIX=/usr/local表示您希望在使用make install命令时指定它的安装路径。

qvk1mo1f

qvk1mo1f3#

你可能想知道为什么它被称为-DD代表define/definition。使用-DCMAKE_BUILD_TYPE=RELEASE在CMake缓存中定义CMAKE_BUILD_TYPE,值为RELEASE
来自文档:
创建或更新CMake CACHE条目。

  • 它的主要用途是在不更改CMakeLists.txt文件的情况下配置您的版本,例如,在不编辑文件的情况下在调试版本和发布版本之间切换。
  • 它不是一个变量,而是一个cache条目的原因是为了方便您。重新运行命令将使用您以前设置的值。

相关问题