Використання локального makefile для CLion замість CMake


148

Чи є спосіб налаштувати CLion використовувати локальний makefile для компіляції коду, а не CMake? Здається, я не можу знайти спосіб зробити це з варіантів збірки.

Відповіді:


142

Оновлення: Якщо ви використовуєте CLion 2020.2, він уже підтримує Makefiles. Якщо ви використовуєте старішу версію, читайте далі.


Незважаючи на те, що наразі підтримується лише CMake, ви можете доручити CMake дзвонити makeзі своїм користувачем Makefile. Відредагуйте CMakeLists.txtдодавання однієї з цих двох команд:

Коли ви скажете CLionзапустити свою програму, вона спробує знайти виконавчий файл з тим самим іменем цілі в каталозі, на який вказує PROJECT_BINARY_DIR. Тож поки ваш makeгенерує файл там, де CLionочікує, не буде проблем.

Ось робочий приклад:

Скажіть CLionпередати його $ (PROJECT_BINARY_DIR) наmake

Це зразок CMakeLists.txt:

cmake_minimum_required(VERSION 2.8.4)
project(mytest)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

add_custom_target(mytest COMMAND make -C ${mytest_SOURCE_DIR}
                         CLION_EXE_DIR=${PROJECT_BINARY_DIR})

Скажіть make, щоб створити виконуваний файл у CLion'sкаталозі

Це зразок Makefile:

all:
    echo Compiling $(CLION_EXE_DIR)/$@ ...
    g++ mytest.cpp -o $(CLION_EXE_DIR)/mytest

Це все, ви також можете змінити робочий каталог вашої програми, щоб він виконувався так, як це відбувається, коли ви запускаєте make зсередини вашого каталогу. Для цього редагуйте:Run -> Edit Configurations ... -> mytest -> Working directory


Я ще не пробував вашої вищезгаданої пропозиції, але чи зможу я виконати свої програми C / C ++ в CLion, якщо це зробити? (Це полегшило б процес налагодження тонни.)
hlin117

3
Я переконався, що рішення @ Mondkin працює. Якщо у вас виникли проблеми зі створенням проекту після зміни Makefileта CMakeLists.txt, спробуйте змінити *.cppфайл. Це дозволило б CLion будувати все з нуля.
hlin117

Це працює, але коли я намагався додати "очистити" до конфігурації, це не вдалося.
71ГА

1
FYI Для того, щоб це працювало, принаймні, на деяких проектах (наприклад, redis), ви повинні додати "ALL", зробивши це: add_custom_target (мій ВСІЙ КОМАНДА -C $ {mytest_SOURCE_DIR} CLION_EXE_DIR = $ {PROJECT_BINARY_DIR} )
Декер

1
що я повинен змінити, щоб він працював з gcc для C
Romain-p

33

Хоча це один із найбільш голосових запитів на функцію , Віктор Кропп є одним плагіном , який додає підтримку для файлів:

Плагін підтримки Makefile для IntelliJ IDEA

Встановити

Ви можете встановити безпосередньо з офіційного сховища:

Налаштування> Плагіни> пошук makefile> Пошук у сховищах> Встановити> Перезапустити

Використовуйте

Існує щонайменше три різні способи запуску:

  1. Клацніть правою кнопкою миші на makefile та виберіть Run
  2. Запустіть файл редактора в редакторі, поставте курсор на одну ціль (будь-де в рядку), натисніть alt+ enter, а потім виберіть зробити ціль
  3. Натисніть ctrl/ cmd+ shift+ F10по цілі (хоча ця не працювала для мене на Mac).

Він відкриває область з назвою Run target з результатом.


2
Якщо ви йдете цим маршрутом, вам потрібно переконатися в налаштуваннях -> make і переконайтеся, що ви вказуєте плагін на каталог встановлення. За замовчуванням він виглядає в / usr / bin / make
Тейлор Лісс

5
Я спробував ваш метод, але це дає лише можливість побудувати свій проект, правда? Я не можу запустити додаток, створений за допомогою цього плагіна, або мені щось не вистачає? У мене є проект, який має досить складний Makefile, і я не хочу писати файл CMake для нього, але я хотів би налагодити його за допомогою CLion ...
blacktemplar

@blacktemplar Я не знаю, чи можна використовувати всі інструменти налагодження від CLion, але я повинен мати можливість компілювати та відладжувати бінарний файл, створений вищевказаним методом. Я просто трохи пограв з цим, і мені вдалося, наприклад, використовувати кнопки керування кроком.
опубліковано

2
Для більш складних конфігурацій це набагато простіше, ніж прийнята відповідь. Редагування makefile просто для запуску цього файлу - це божевілля!
Кевін

1
Як ви запустили створений бінарний файл у кліоні? Я створюю нову конфігурацію для Application, потім націлюю: Усі цілі, виконується: ім'я двійкового файлу, але я отримую цю помилку: "Не можу працювати binary<<default>"
Kennet Celeste

7

Найновіша версія має кращу підтримку буквально для будь-яких створених Makefiles через компільованийb

Три кроки:

  1. встановити компільованийb

    pip install compiledb
    
  2. запустити сухий макіяж

    compiledb -n make 
    

    (зробіть автоген, налаштуйте, якщо потрібно)

  3. буде створений файл compile_commands.json, відкрийте проект, і ви побачите, що CLion завантажить інформацію з файлу json. Якщо ви, ваш CLion, все ще намагаєтесь знайти CMakeLists.txt і не можете прочитати compile_commands.json, спробуйте видалити всю папку, повторно завантажте вихідні файли та повторіть крок 1,2,3

Оригінальний пост: Робота з Makefiles у CLion з використанням БД компіляції


1
Nice Jetbrains працює над проблемою, але станом на 16 листопада 2018 року це не корисно, оскільки ви не можете налагодити створений виконуваний файл.
gerardw

3

Щоб повністю уникнути використання CMAKE, ви можете просто:

  1. Створіть свій проект як зазвичай за допомогою Make через термінал.

  2. Змініть конфігурації CLion, перейдіть до (у верхній смузі):
    Run -> Edit Configurations -> yourProjectFolder

  3. Змініть на, Executableстворене за допомогою Make

  4. Змініть Working directoryпапку, у якій зберігається ваш виконуваний файл (якщо потрібно)

  5. Видаліть Buildзавдання у Before launch:Activate tool windowвікні

І ви все налаштовані! Тепер ви можете скористатися кнопкою налагодження після ручної збірки.


1
У моїй конфігурації, як ви описали, написано "На чому не можна будувати", навіть якщо виконуваний файл встановлений і існує.
віслюк

Це правильно. Ви повинні будувати вручну, а потім запускати (не будуючи). Зауважте, що найновіша версія CLion, здається, краще підтримує MakeFiles. Це рішення все ще працює, але я вважав би його застарілим
13013SwagR

Що б ви запропонували для останньої версії? У мене є плагін makefile, але він не обробляє компіляцію / налагодження.
осел

Ви повинні мати можливість компілювати, і я гадаю, що налагодження також із плагіном Makefile. Див. Док. Кліона. . Хоча я пропоную вам використовувати CMake, який повністю підтримується і дозволяє уникнути всіх проблем. Ви також можете його налаштувати за допомогою шаблону віддаленої налагодження або використовувати GDB безпосередньо в консолі.
13013SwagR

1

Наразі CLion підтримує лише CMake. Інші системи побудови будуть додані в майбутньому, але наразі ви можете використовувати лише CMake.

Інструмент імпортера було впроваджено, щоб допомогти вам використовувати CMake.

Редагувати:

Джерело: http://blog.jetbrains.com/clion/2014/09/clion-answers-frequently-asked-questions/


Бачачи , що цей пост був за місяць зараз, і це єдина відповідь, я впевнений , що ви маєте рацію, на жаль ...
hlin117


що робити, якщо ви не хочете використовувати cmake?
Enerccio

1

Я не дуже добре знайомий з CMake і не міг використовувати рішення Mondkin безпосередньо.

Ось що я придумав у своєму CMakeLists.txt, використовуючи останню версію CLion (1.2.4) та MinGW в Windows (я думаю, вам просто потрібно буде замінити всі: g ++ mytest.cpp -o bin / mytest на make if ви не використовуєте однакову настройку):

cmake_minimum_required(VERSION 3.3)
project(mytest)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

add_custom_target(mytest ALL COMMAND mingw32-make WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})

І користувацький Makefile такий (він знаходиться в корені мого проекту і генерує виконуваний файл у каталозі bin):

all:
    g++ mytest.cpp -o bin/mytest

Я в змозі створити виконуваний файл і помилки у вікні журналу можна натискати.

Підказки в IDE досить обмежені через, що є великим обмеженням порівняно з чистими проектами CMake ...


Це працювало для мене. Мені вдалося змусити CLion розпізнати свої вихідні файли як "активні", включивши їх у свої, set(SOURCE_FILES all_files_here.c)а потім додавши add_executable(foobar_cmake ${SOURCE_FILES})додатково до власної цілі. Тоді просто переконайтеся, що CLion налаштований на створення / запуск вашої власної цілі, а не _cmake.
Кевін Марк
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.