Verwenden des lokalen Makefiles für CLion anstelle von CMake


148

Gibt es eine Möglichkeit, CLion so zu konfigurieren, dass anstelle von CMake ein lokales Makefile zum Kompilieren von Code verwendet wird? Ich kann anscheinend aus den Build-Optionen keinen Weg finden, dies zu tun.

Antworten:


142

Update: Wenn Sie mit CLION 2020,2, dann bereits unterstützt Makefiles. Wenn Sie eine ältere Version verwenden, lesen Sie weiter.


Obwohl derzeit nur CMake unterstützt wird, können Sie CMake anweisen, makemit Ihrem Benutzer anzurufen Makefile. Bearbeiten Sie das CMakeLists.txtHinzufügen eines dieser beiden Befehle:

Wenn Sie anweisen CLion, Ihr Programm auszuführen, wird versucht, eine ausführbare Datei mit demselben Namen des Ziels in dem Verzeichnis zu finden, auf das verwiesen wird PROJECT_BINARY_DIR. Solange Sie makedie Datei so generieren CLion, wie es erwartet wird, gibt es kein Problem.

Hier ist ein Arbeitsbeispiel:

Sagen Sie CLion, dass Sie sein $ (PROJECT_BINARY_DIR) an übergeben sollenmake

Dies ist das Beispiel 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})

Sagen Sie make, dass die ausführbare Datei im CLion'sVerzeichnis generiert werden soll

Dies ist das Beispiel Makefile:

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

Das ist alles, Sie möchten möglicherweise auch das Arbeitsverzeichnis Ihres Programms so ändern, dass es so ausgeführt wird, wie es ist, wenn Sie make aus Ihrem Verzeichnis heraus ausführen. Für diese Bearbeitung:Run -> Edit Configurations ... -> mytest -> Working directory


Ich habe Ihren obigen Vorschlag noch nicht ausprobiert, aber könnte ich meine C / C ++ - Programme in CLion ausführen, wenn ich dies tue? (Dies würde den Debugging-Prozess eine Tonne einfacher machen.)
hlin117

3
Ich habe überprüft, ob die Lösung von @ Mondkin funktioniert. Wenn Sie nach dem Ändern von Makefileund Probleme beim Erstellen des Projekts haben CMakeLists.txt, versuchen Sie, eine *.cppDatei zu ändern . Dies würde CLion dazu bringen, alles von Grund auf neu zu erstellen.
hlin117

Dies funktioniert, aber als ich versuchte, der Konfiguration "make clean" hinzuzufügen, schlägt dies fehl.
71GA

1
Zu Ihrer Information Damit dies zumindest bei einigen Projekten (z. B. Redis) funktioniert, müssen Sie ein 'ALL' hinzufügen, um Folgendes zu erstellen: add_custom_target (mytest ALL COMMAND make -C $ {mytest_SOURCE_DIR} CLION_EXE_DIR = $ {PROJECT_BINARY_DIR} )
Decker

1
Was soll ich ändern, damit es mit gcc für C funktioniert
Romain-p

33

Während dies eine der am häufigsten bewerteten Feature-Anfragen ist , gibt es ein Plugin von Victor Kropp , das Makefiles unterstützt:

Makefile-Support-Plugin für IntelliJ IDEA

Installieren

Sie können direkt aus dem offiziellen Repository installieren:

Einstellungen> Plugins> Suchen nach makefile> In Repositorys suchen > Installieren> Neu starten

Verwenden

Es gibt mindestens drei verschiedene Arten der Ausführung:

  1. Klicken Sie mit der rechten Maustaste auf ein Makefile und wählen Sie Ausführen
  2. Lassen Sie das Makefile im Editor öffnen, bewegen Sie den Cursor über ein Ziel (irgendwo in der Zeile), drücken Sie alt+ enterund wählen Sie dann Ziel erstellen
  3. Drücke ctrl/ cmd+ shift+ F10auf ein Ziel (obwohl dieses für mich auf einem Mac nicht funktioniert hat).

Es öffnet sich ein Fenster namens Run Ziel mit dem Ausgang.


2
Nur ein Headsup. Wenn Sie diesen Weg gehen, gehen Sie zu Einstellungen-> Make und stellen Sie sicher, dass Sie das Plugin auf das Installationsverzeichnis von make verweisen. Standardmäßig sieht es in / usr / bin / make
Taylor Liss

5
Ich habe Ihre Methode ausprobiert, aber dies gibt nur die Möglichkeit, Ihr Projekt zu erstellen, oder? Ich kann mit diesem Plugin keine Anwendung ausführen, die mit make erstellt wurde, oder vermisse ich etwas? Ich habe ein Projekt, das ein ziemlich komplexes Makefile hat und ich möchte keine CMake-Datei dafür schreiben, aber ich möchte es mit CLion debuggen ...
blacktemplar

@blacktemplar Ich weiß nicht, ob Sie alle Debugging-Tools von CLion verwenden können, aber ich sollte in der Lage sein, eine mit der obigen Methode erstellte Binärdatei zu kompilieren und zu debuggen. Ich habe nur ein bisschen damit gespielt und konnte zum Beispiel die Step-Control-Tasten verwenden.
iled

2
Bei komplexeren Konfigurationen ist dies viel einfacher als die akzeptierte Antwort. Das Makefile zu bearbeiten, nur um dieses Makefile auszuführen, ist Wahnsinn!
Kevin

1
Wie haben Sie die generierte Binärdatei in Clion ausgeführt? Ich erstelle eine neue Konfiguration für die Anwendung und dann das Ziel: Alle Ziele, Ausführbar: Name der Binärdatei, aber ich erhalte die folgende Fehlermeldung: "Kann nicht binaryauf <Standard> ausgeführt werden"
Kennet Celeste

7

Die neueste Version bietet buchstäblich eine bessere Unterstützung für alle generierten Makefiles über das compiledb

Drei Schritte:

  1. installiere compiledb

    pip install compiledb
    
  2. Lassen Sie eine trockene Marke laufen

    compiledb -n make 
    

    (Autogen machen, bei Bedarf konfigurieren)

  3. Es wird eine compile_commands.json-Datei generiert, die das Projekt öffnet. Sie werden sehen, dass CLion Informationen aus der json-Datei lädt. Wenn Ihre CLion weiterhin versucht, CMakeLists.txt zu finden und compile_commands.json nicht lesen kann, versuchen Sie, den gesamten Ordner zu entfernen, die Quelldateien erneut herunterzuladen und Schritt 1,2,3 zu wiederholen

Ursprünglicher Beitrag: Arbeiten mit Makefiles in CLion mithilfe der Kompilierungsdatenbank


1
Schön, dass die Jetbrains das Problem lösen, aber ab dem 16. November 2018 ist es nicht nützlich, da Sie die generierte ausführbare Datei nicht debuggen können.
Gerardw

3

Um die Verwendung von CMAKE vollständig zu vermeiden, können Sie einfach:

  1. Erstellen Sie Ihr Projekt wie gewohnt mit Make durch das Terminal.

  2. Ändern Sie Ihre CLion-Konfigurationen und gehen Sie zu (in der oberen Leiste):
    Run -> Edit Configurations -> yourProjectFolder

  3. Ändern Sie die Executablein die mit Make generierte

  4. Wechseln Sie Working directoryin den Ordner, in dem sich Ihre ausführbare Datei befindet (falls erforderlich).

  5. Entfernen Sie die BuildAufgabe in der Before launch:Activate tool windowBox

Und du bist fertig! Sie können jetzt die Debug-Schaltfläche nach dem manuellen Erstellen verwenden.


1
In meiner von Ihnen beschriebenen Konfiguration steht "Nichts, worauf man aufbauen kann", obwohl die ausführbare Datei festgelegt ist und existiert.
Esel

Das ist richtig. Sie sollten manuell erstellen und dann ausführen (ohne zu erstellen). Beachten Sie, dass die neueste Version von CLion MakeFiles besser zu unterstützen scheint. Diese Lösung funktioniert immer noch, aber ich würde sie als veraltet betrachten
13013SwagR

Was würden Sie für die neueste Version vorschlagen? Ich habe das Makefile-Plugin, aber es kann nicht kompiliert / debuggt werden.
Esel

Sie sollten in der Lage sein zu kompilieren und ich vermute auch Debug mit dem Makefile-Plugin. Siehe das Clion Doc. . Ich schlage jedoch vor, dass Sie CMake verwenden, das vollständig unterstützt wird und alle Probleme vermeidet. Sie können es auch (glaube ich) mit der Remote-Debug-Vorlage einrichten oder GDB direkt in der Konsole verwenden.
13013SwagR

1

Derzeit wird nur CMake von CLion unterstützt. Andere Build-Systeme werden in Zukunft hinzugefügt, aber derzeit können Sie nur CMake verwenden.

Es wurde ein Importer-Tool implementiert, mit dem Sie CMake verwenden können.

Bearbeiten:

Quelle: http://blog.jetbrains.com/clion/2014/09/clion-answers-frequently-asked-questions/


Angesichts der Tatsache, dass dieser Beitrag seit einem Monat nicht mehr
verfügbar


Was ist, wenn Sie cmake nicht verwenden möchten?
Enerccio

1

Ich bin mit CMake nicht sehr vertraut und konnte Mondkins Lösung nicht direkt verwenden.

Folgendes habe ich in meiner CMakeLists.txt mit der neuesten Version von CLion (1.2.4) und MinGW unter Windows gefunden (ich denke, Sie müssen nur alle ersetzen: g ++ mytest.cpp -o bin / mytest durch make if Sie verwenden nicht dasselbe Setup):

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})

Das benutzerdefinierte Makefile sieht folgendermaßen aus (es befindet sich im Stammverzeichnis meines Projekts und generiert die ausführbare Datei in einem bin-Verzeichnis):

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

Ich kann die ausführbare Datei erstellen und Fehler im Protokollfenster können angeklickt werden.

Hinweise in der IDE sind ziemlich begrenzt, was eine große Einschränkung im Vergleich zu reinen CMake-Projekten darstellt ...


Das hat bei mir funktioniert. Ich konnte CLion dazu bringen, meine Quelldateien als "aktiv" zu erkennen, indem ich sie alle in meine einfügte set(SOURCE_FILES all_files_here.c)und sie dann add_executable(foobar_cmake ${SOURCE_FILES})zusätzlich zum benutzerdefinierten Ziel hinzufügte . Stellen Sie dann einfach sicher, dass CLion so eingestellt ist, dass Ihr benutzerdefiniertes Ziel erstellt / ausgeführt wird und nicht das _cmake-Ziel.
Kevin Mark
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.