Какая именно командная строка (процесс и аргументы) используется CLion при вызове CMake? Я пытаюсь использовать один и тот же каталог для сборки вручную с помощью терминала и для сборки с помощью IDE, но кажется, что одно плохо взаимодействует с другим.
У меня нет проблем с использованием CLion только для обработки конфигураций CMake (чтобы небольшое несоответствие конфигурации не запускало другое выполнение CMake), но кажется, что даже стандартные сборки, использующие make
в командной строке, снова вызывают cmake
.
Я видел, что CLion печатает свой «вызов» CMake, но я не вижу, где он ссылается на текущий рабочий каталог. И поскольку в графическом интерфейсе вы настраиваете пути относительно корневой папки проекта (где живет 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
Этот специальный файл используется на этапе настройки, поэтому использование путей, отличных от относительного корня проекта или абсолютных путей, не будет работать.
Командная строка Шаг настройки отображается в представлении 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
Затем вид можно открыть с помощью Cmd-0
на Mac или через меню: View -
Tool Windows - Messages
.
Чтобы работать с относительными путями, вы можете обратиться к переменной PROJECT_SOURCE_DIR в вашем CMakeLists.txt
.
Извините, я забыл основную часть - шаг настройки. Обновил ответ.
Я видел его, но не могу понять, где он запускается, в каком каталоге он вызывается. Может быть, он пропускает только параметры исходной папки и папки сборки?