В CLion как я могу переименовать проект?
Я пытаюсь переименовать свой проект из кодировки в Tutorial, но после рефакторинга имени каталога появляется ошибка, например:
Ошибка: CMakeLists.txt не найден в D:\code\encoding
Я считаю, что файлы в .idea
каталог не меняется автоматически, они все еще encoding.iml
, encodings.xml
,
7 ответов
В папке проекта cd
к .idea
каталог. Найдите .name
файл и откройте его для редактирования. Отображается одна строка с именем текущего проекта. Измени это и сохрани.
Если .name
файла нет, создайте его, затем добавьте одну строку текста с нужным именем.
Теперь откройте CLion, и название проекта изменилось.
При использовании CLion с CMake имя проекта задается project
внутри файла CMakeLists.txt.
Найдите строку, подобную приведенной ниже, и замените "my_project_name" на желаемое имя проекта CLion.
project(my_project_name)
Затем перезагрузите файл, используя Инструменты >> CMake >> Перезагрузить проект CMake или, если он есть, щелкнув Обновить изменения на желтой полосе в верхней части окна.CMakeLists.txt
окно редактора.
Обратите внимание: если вы используете New Cmake Project From Sources... для создания своего проекта, тогда CLion генерируетCMakeLists.txt
в то время включая команду проекта, используя имя каталога. Это нормально редактироватьCMakeLists.txt
после его создания, включая изменение имени проекта.
На Mac:
- Закрыть CLion
- Переименуйте папку вашего проекта, найденную в ~Users/Your_User/ClionProjects
- Открыть CLion
- Нажмите "Открыть проект"
- Найдите ваш переименованный проект
- Подождите, пока ваш проект полностью загрузится и обновится
Если вы используете Clion на Mac, все, что вам нужно сделать, - это переименовать каталог, содержащий ваши файлы.cpp и.h и CMake, затем в Clion перейдите к открытию, а затем к новому имени каталога, и Clion автоматически выяснит все остальное.,
Это то, что я сделал. Однако, прежде чем открыть новый проект, который вы переименовали. Clion создаст каталог проекта с исходным именем, и он будет пустым, поэтому вам придется удалить этот каталог.
Однако, если вы используете Windows или другие машины, это может не совпадать. Потому что теперь, когда я смотрю, у меня нет файла.idea.
Теперь, когда я думаю об этом. Может быть, это новая функция с момента нового обновления. Я не уверен, когда вышло новое обновление для IDE Jetbrain. Так что, может быть, это новая функция, которой не было во время вашего исходного поста.
Я так делал в линуксе. Grep oldProjectName в каталоге моего проекта с помощью cmd:
grep -rn oldProjectName
CMakeLists.txt, cmake-build-debug/ .idea/ имеют эту строку, поэтому я заменяю все на cmd:
sed -i "s/oldProjectName/newProjectName/g" `grep -rl "oldProjectName" .`
Простой ответ, который на самом деле работает
В терминале введите следующие команды (заменить <project_dir>
, <old_name>
, а также <new_name>
при необходимости):
Версия для Linux:
find <project_dir>/.idea -type f -print0 | xargs -0 sed -i "s/<old_name>/<new_name>/g"`
mv <project_dir>/.idea/<old_name>.iml <project_dir>/.idea/<new_name>.iml
Версия для Mac:
То же самое, что и версия для Linux, но вам нужно будет добавить ''
сразу после sed -i
(см. этот ответ):
find <project_dir>/.idea -type f -print0 | xargs -0 sed -i '' "s/<old_name>/<new_name>/g"`
mv <project_dir>/.idea/<old_name>.iml <project_dir>/.idea/<new_name>.iml
и вы сделали.
|
|
|
объяснение
find ... | xargs... sed...
строка находит ваше старое имя во всех файлах проектов CLion и заменяет его новым именем. Если вы хотите, вы можете сначала увидеть, какие строки будут изменены в каких файлах с помощью этой команды:
grep -R <old_name> <project_dir>/.idea/*
Затем вы можете выполнить пробный запуск команды замещения:
find <project_dir>/.idea -type f -print0 | xargs -0 sed -n "s/<old_name>/<new_name>/p"
Легче ответить:
Почему ты делаешь это так сложно? Я сделал это путем редактирования или добавления файла.name в каталог.idea. Я сделал это несколько раз, и это работает:
- Отредактируйте или создайте файл.name в каталоге.idea
- Изменить или добавить имя файла.
- Сохранить файл
- Вновь откройте проект и вуаля, название нового проекта.