CMake:使用-D(命令行)优于add_compile_definitions或target_compile_defi



CMake新功能当添加库时,我看到很多指令这样做:

cmake -D OPENSSL_ROOT_DIR=/usr/local/opt/openssl

为什么把它放在实际的CMakeLists.txt首选?

set(OPENSSL_ROOT_DIR "/usr/local/opt/openssl")
  • 当你提交第二个或必须小心不要将它与其他东西一起提交时,不要将第一个提交到存储库。
  • 第二种方法通常用于允许某些项目的用户修改该项目的某些方面。因此,任何属于项目本身(不可自定义)直接进入CMake文件,其他一切都可以从命令行提供。

也请注意,CMake预设添加了自定义构建CMake文件之外的能力,因此通过控制台调用直接提供变量的方法是我期望消失并被预设取代的东西。但是它们的工作方式仍然是相同的:在预设中定义的变量与生成的控制台调用一起进入CMake缓存(与IDE可能不同)。

相关内容

最新更新