调用 CMake 时 CLion 使用的命令行是什么?

What is the command line used by CLion when invoking CMake?

CLion 在调用 CMake 时使用的命令行(过程和参数)到底是什么?我正在尝试将相同的目录用于使用终端的手动构建和使用 IDE 的构建,但似乎一个与另一个的交互很糟糕。

我对仅使用 CLion 来处理 CMake 配置没有问题(以避免轻微的配置不匹配触发另一个 CMake 执行),但似乎即使是在命令行上使用 make 的标准构建也会触发 cmake 再次.

我看到 CLion 将其 "call" 打印到 CMake,但我看不到它引用当前工作目录的位置。由于在 GUI 上,您配置的路径是相对于项目根文件夹(CMakeLists.txt 所在的位置),而不是相对于构建文件夹的路径。我希望这个细节是这里的罪魁祸首。

通常在命令行中我会这样做:

$ cd project
$ mkdir -p builds/debug
$ cd builds/debug
$ cmake $MY_CMAKE_OPTS -DSPECIAL_FILE=../../file.ext ../..

不过,在 CLion 上,我必须这样配置它:

CMake options: $MY_CMAKE_OPTS -DSPECIAL_FILE=file.ext
Generation path: builds/debug
The rest I've used the default

特殊文件用于配置阶段,因此使用相对于项目根目录或绝对路径以外的路径将不起作用。

配置步骤 当您load/reload CMake 项目时,CMake 视图中显示命令行:View - Tool Windows - CMake。该视图没有默认热键。

示例:/Users/vic/bin/cmake_ninja_wrapper.py -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - Unix Makefiles" /Users/user/src/helloworld.

根据配置,当前目录可以是 PROJECT_SOURCE_DIR/cmake-build-debug(为我生成构建文件的地方)、PROJECT_SOURCE_DIR/cmake-build-release 或其他。

构建步骤 命令行显示在Messages - Build 视图中。当您从构建菜单调用构建时,它会打开。我认为当前目录并不重要,因为所有构建文件都已生成。

示例:/Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake --build /Users/user/src/helloworld/cmake-build-debug --target helloworld -- -j 6

然后可以在 Mac 上使用 Cmd-0 或通过菜单打开视图:View - Tool Windows - Messages.

要使用相对路径,您可以在 CMakeLists.txt.

中引用 PROJECT_SOURCE_DIR 变量