CMake yerine CLion için yerel makefile kullanma


148

CLion'u CMake yerine kodu derlemek için yerel bir makefile kullanacak şekilde yapılandırmanın bir yolu var mı? Yapım seçeneklerinden bunu yapmanın yolunu bulamıyorum.

Yanıtlar:


142

Güncelleme: CLion 2020.2 kullanıyorsanız, zaten Makefiles'i destekliyor. Eski bir sürüm kullanıyorsanız, okumaya devam edin.


Rağmen şu anda sadece CKağıt aramak CMake komut verebilirsiniz desteklenen makearamaları özel ile Makefile. Senin düzenleme CMakeLists.txtbu iki komutlardan birini ekleyerek:

CLionProgramınızı çalıştırmayı söylediğinizde , işaret ettiği dizinde aynı ada sahip bir yürütülebilir dosya bulmaya çalışır PROJECT_BINARY_DIR. Bu nedenle, beklediğiniz makeyerde dosyayı oluşturduğunuz sürece CLionsorun olmayacaktır.

İşte çalışan bir örnek:

Söyle CLiononun $ (PROJECT_BINARY_DIR) geçmekmake

Bu örnek 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})

İçinde yürütülebilir üretmek için marka söyle CLion'sdizinde

Bu örnek Makefile:

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

Hepsi bu kadar, programınızın çalışma dizinini değiştirmek isteyebilirsiniz, böylece dizininizin içinden make komutunu çalıştırdığınızda olduğu gibi çalışır. Bu düzenleme için:Run -> Edit Configurations ... -> mytest -> Working directory


Yukarıdaki önerinizi henüz denemedim, ancak C / C ++ programlarımı CLion içinde yürütebilir miyim? (Bu, hata ayıklama işlemini bir ton daha kolay hale getirir.)
hlin117

3
@ Mondkin'in çözümünün işe yaradığını doğruladım. Eğer değiştirdikten sonra proje inşa sorun yaşıyorsanız Makefileve CMakeLists.txtbir modifiye deneyin *.cppdosyayı. Bu CLion her şeyi sıfırdan inşa ederdi.
hlin117

Bu çalışır, ancak yapılandırmaya "temiz olun" eklemeye çalıştığımda başarısız olur.
71GA

1
FYI Bunun işe yaraması için, en azından bazı projelerde (örneğin redis), bir 'TÜMÜ' eklemeniz gerekir: add_custom_target (TÜM KOMUTU test edin -C $ {mytest_SOURCE_DIR} CLION_EXE_DIR = $ {PROJECT_BINARY_DIR} )
Decker

1
C için gcc ile çalışmak için neyi değiştirmeliyim?
Romain-p

33

Bu en çok oylanan özellik taleplerinden biri olsa da , Victor Kropp tarafından sunulan ve dosyalara destek ekleyen bir eklenti var :

IntelliJ IDEA için Makefile destek eklentisi

Yüklemek

Doğrudan resmi depodan kurabilirsiniz:

Ayarlar> Eklentiler> makefileara > Depolarda ara> Yükle> Yeniden başlat

kullanım

Koşmanın en az üç farklı yolu vardır:

  1. Bir makefile sağ tıklayın ve Çalıştır'ı seçin.
  2. , Editörü makefile açık mı (her yerde on line) bir hedef üzerinde imlecini hit alt+ enter, ardından seçin yapmak hedefi
  3. Bir hedefe ctrl/ cmd+ shift+ tuşuna basın F10(bu benim için bir mac'ta işe yaramasa da).

Çıktı ile Hedef çalıştır adlı bir bölme açar .


2
Sadece bir headup, bu rotaya giderseniz, ayarlara gittiğinizden emin olun-> make ve eklentiyi make kurulum dizinine yönlendirdiğinizden emin olun. Varsayılan olarak / usr / bin / make'e bakar
Taylor Liss

5
Metodunu denedim, ama bu sadece projeni inşa etme fırsatı veriyor, değil mi? Bu eklenti ile birlikte oluşturulmuş bir uygulamayı çalıştıramıyorum veya bir şey mi kaçırıyorum? Oldukça karmaşık bir Makefile olan bir projem var ve bunun için bir CMake dosyası yazmak istemiyorum ama CLion kullanarak hata ayıklamak istiyorum ...
blacktemplar

@blacktemplar CLion'daki tüm hata ayıklama araçlarını kullanıp kullanamayacağınızı bilmiyorum, ancak yukarıdaki yöntemle oluşturulan bir ikili dosyayı derleyip hata ayıklayabilmeliyim. Onunla biraz oynadım ve örneğin adım kontrol düğmelerini kullanabildim.
iled

2
Daha karmaşık yapılandırmalar için bu, kabul edilen yanıttan çok daha kolaydır. Sadece bu makefile çalıştırmak için makefile düzenlemek delilik olduğunu!
Kevin

1
Clion'da oluşturulan ikili dosyayı nasıl çalıştırdınız? Uygulama için yeni bir yapılandırma oluşturdum, sonra hedefleyin: Tüm hedefler, Yürütülebilir: ikili dosya adı, ancak bu hatayı alıyorum: " binary<default> üzerinde çalıştırılamıyor "
Kennet Celeste

7

Yeni sürüm, oluşturulan derlenmiş Makefiles için tam anlamıyla daha iyi desteğe sahiptir.

Üç adım:

  1. compiledb'yi yükle

    pip install compiledb
    
  2. kuru yapmak

    compiledb -n make 
    

    (otojeni yapın, gerekirse yapılandırın)

  3. oluşturulan bir compile_commands.json dosyası olacak projeyi açın ve göreceksiniz CLion json dosyasından bilgi yükleyecektir. CLion'ınız hala CMakeLists.txt dosyasını bulmaya çalışırsanız ve compile_commands.json dosyasını okuyamazsanız, tüm klasörü kaldırmayı, kaynak dosyaları yeniden indirmeyi ve adım 1,2,3'ü yeniden yapmayı deneyin.

Orignal post: Compilation DB kullanarak CLion'da Makefiles ile çalışma


1
Güzel Jetbrains sorunu çalışıyor, ancak 16 Kasım 2018 itibariyle, oluşturulan yürütülebilir hata ayıklamak olamaz çünkü yararlı değil.
gerardw

3

CMAKE kullanmaktan tamamen kaçınmak için şunları yapabilirsiniz:

  1. Terminal üzerinden Make ile projenizi normal şekilde yapın.

  2. CLion yapılandırmalarınızı değiştirin, (üst çubukta) adresine gidin:
    Run -> Edit Configurations -> yourProjectFolder

  3. ExecutableMake ile oluşturulanı değiştirin

  4. Working directoryYürütülebilir dosyayı tutan klasöre değiştirin (gerekirse)

  5. Kutudaki Buildgörevi kaldırmaBefore launch:Activate tool window

Ve hepiniz hazırsınız! Artık manuel derlemenizden sonra hata ayıklama düğmesini kullanabilirsiniz.


1
Açıkladığınız gibi yapılandırmam, çalıştırılabilir ayarlanmış ve var olsa bile "Hiçbir şey inşa etmek" diyor.
eşek

Bu doğru. El ile inşa etmeli ve çalıştırmalısınız (bina olmadan). CLion'un en yeni sürümünün MakeFiles'i daha iyi desteklediğini unutmayın. Bu çözüm hala çalışıyor, ancak Kullanım
Dışı

En son sürüm için ne önerirsiniz? Makefile eklentisi var ama derleme / hata ayıklama işlemez.
eşek

Derleyebilmelisiniz ve Makefile eklentisi ile de hata ayıklama tahmin ediyorum. Bkz. Clion Doc. . Yine de, tamamen desteklenen ve tüm sorunları önleyen CMake kullanmanızı öneririm. Uzaktan hata ayıklama Şablonu ile de (sanırım) kurabilir veya GDB'yi doğrudan konsolda kullanabilirsiniz.
13013SwagR

1

Şu anda, yalnızca CMake CLion tarafından desteklenmektedir. Gelecekte diğer yapı sistemleri eklenecektir, ancak şu anda yalnızca CMake'i kullanabilirsiniz.

CMake'i kullanmanıza yardımcı olacak bir ithalatçı aracı uygulanmıştır.

Düzenle:

Kaynak: http://blog.jetbrains.com/clion/2014/09/clion-answers-fretely-asked-questions/



Yorumun kaynağını daha ayrıntılı inceleyerek bunu buldum: youtrack.jetbrains.com/issue/CPP-494#tab=Comments
hlin117

cmake kullanmak istemezseniz ne olur?
Enerccio

1

CMake'i çok iyi tanımıyorum ve Mondkin'in çözümünü doğrudan kullanamadım.

İşte Windows'da CLion (1.2.4) ve MinGW'nin en son sürümünü kullanarak CMakeLists.txt dosyamda bulduğum şey (sanırım sadece hepsini değiştirmelisiniz: g ++ mytest.cpp -o bin / mytest eğer aynı kurulumu kullanmıyorsunuz):

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

Ve özel Makefile bu (projemin kökünde bulunur ve bir bin dizinindeki yürütülebilir dosyayı oluşturur):

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

Yürütülebilir dosyayı oluşturabiliyorum ve günlük penceresindeki hatalar tıklanabilir.

IDE'deki ipuçları oldukça sınırlıdır, bu da saf CMake projelerine kıyasla büyük bir sınırlamadır ...


Bu benim için çalıştı. CLion'u kaynak dosyalarıma hepsini dahil ederek set(SOURCE_FILES all_files_here.c)ve ardından add_executable(foobar_cmake ${SOURCE_FILES})özel hedefe ekleyerek "aktif" olarak tanıyabildim . Ardından CLion'un _cmake değil özel hedefinizi oluşturmaya / çalıştırmaya ayarlandığından emin olun.
Kevin Mark
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.