为什么在线源代码倾向于调用'cmake..&& make'而不是'cmake..&& cmake --build build --target install'

voase2hg  于 2023-01-26  发布在  其他
关注(0)|答案(1)|浏览(161)

在使用CMake的项目中,您经常会看到以下说明

mkdir build
cd build
cmake ..
make install

或者是变种
CMake是一个构建自动化工具,可以与许多构建器一起工作。所以上面的步骤对我来说很奇怪,因为
1.这意味着Linux(或者至少可以访问mkdircd
1.它改变了你的$PWD,在我看来,这对一个构建来说并不重要
1.它硬编码make
在我的个人准则里,我倾向于叫

cmake -S . -B build -DCMAKE_INSTALL_PREFIX=<wherever_I_want_to_install>  # -DCMAKE_INSTALL_PREFIX is optional
cmake --build build --target install
# ... or ...
cmake --build build
cmake --install build --prefix=<wherever_I_want_to_install>

1.无硬编码make。100% CMake命令

  1. $PWD无变更
    1.更少的操作系统特定详细信息
    这种情况比较少见,但如果我需要编译器特定的选项或其他定制,我会使用-DCMAKE_CXX_FLAGS通过命令行传递它们,并尽量使CMakeLists.txt与编译器无关。
    是否存在客观差异(编辑:为清楚起见:客观的优点/缺点)。如果是,它们是什么?如果两种方法之间没有任何有意义的区别,为什么make install选项如此频繁?
jq6vz3qz

jq6vz3qz1#

为什么在线资源倾向于调用cmake .. && make而不是cmake .. && cmake --build build --target install
我认为有以下几个原因:

  • 人们更熟悉make,因此他们倾向于使用他们熟悉的内容
  • cmake --build在当时并不存在
  • 由于上述原因,作者不知道cmake --build的存在

相关问题