Menggunakan makefile lokal untuk CLion, bukan CMake

148

Apakah ada cara untuk mengkonfigurasi CLion untuk menggunakan makefile lokal untuk mengkompilasi kode, daripada CMake? Sepertinya saya tidak dapat menemukan cara untuk melakukannya dari opsi build.

hlin117
sumber

Jawaban:

142

Pembaruan: Jika Anda menggunakan CLion 2020.2, maka sudah mendukung Makefiles. Jika Anda menggunakan versi yang lebih lama, baca terus.


Meskipun saat ini hanya CMake yang didukung, Anda dapat menginstruksikan CMake untuk menelepon makedengan kebiasaan Anda Makefile. Edit Anda CMakeLists.txtmenambahkan salah satu dari dua perintah ini:

Ketika Anda mengatakan CLionuntuk menjalankan program Anda, itu akan mencoba untuk menemukan executable dengan nama target yang sama di direktori yang ditunjuk oleh PROJECT_BINARY_DIR. Jadi selama Anda makemenghasilkan file di mana CLionmengharapkan, tidak akan ada masalah.

Berikut ini contoh kerjanya:

Katakan CLionuntuk meneruskan $ (PROJECT_BINARY_DIR) kemake

Ini adalah sampel 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})

Tell make untuk menghasilkan CLion'sdirektori yang dapat dieksekusi

Ini adalah sampel Makefile:

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

Itu saja, Anda juga mungkin ingin mengubah direktori kerja program Anda sehingga dijalankan seperti ketika Anda menjalankan make dari dalam direktori Anda. Untuk pengeditan ini:Run -> Edit Configurations ... -> mytest -> Working directory

Daniel
sumber
Saya belum mencoba saran Anda di atas, tetapi apakah saya dapat menjalankan program C / C ++ dalam CLion jika saya melakukannya? (Ini akan membuat proses debug satu ton lebih mudah.)
hlin117
3
Saya memverifikasi bahwa solusi @ Mondkin berfungsi. Jika Anda mengalami masalah dalam membangun proyek setelah memodifikasi Makefiledan CMakeLists.txt, coba modifikasi *.cppfile. Ini akan membuat CLion membangun semuanya dari awal.
hlin117
Ini berfungsi, tetapi ketika saya mencoba untuk menambahkan "bersihkan" ke konfigurasi gagal.
71GA
1
FYI Agar ini berfungsi, setidaknya pada beberapa proyek, (misalnya redis), Anda harus menambahkan 'SEMUA', membuatnya: add_custom_target (mytest SEMUA PERINTAH membuat -C $ {mytest_SOURCE_DIR} CLION_EXE_DIR = $ {PROJECT_BINARY_DIR} )
Decker
1
apa yang harus saya ubah untuk membuatnya bekerja dengan gcc untuk C
Romain-p
33

Meskipun ini adalah salah satu permintaan fitur yang paling banyak dipilih , ada satu plugin yang tersedia, oleh Victor Kropp , yang menambahkan dukungan ke makefiles:

Plugin dukungan Makefile untuk IntelliJ IDEA

Install

Anda dapat menginstal langsung dari repositori resmi:

Pengaturan> Plugins> cari makefile> Cari di repositori> Instal> Restart

Menggunakan

Setidaknya ada tiga cara untuk menjalankan:

  1. Klik kanan pada makefile dan pilih Run
  2. Biarkan makefile terbuka di editor, letakkan kursor di atas satu target (di mana saja di baris), tekan alt+ enter, lalu pilih make target
  3. Tekan ctrl/ cmd+ shift+ F10pada target (walaupun yang ini tidak bekerja untuk saya di mac).

Ini membuka panel bernama Jalankan target dengan output.

iled
sumber
2
Headup saja, jika Anda memilih rute ini, pastikan Anda masuk ke pengaturan-> buat dan pastikan Anda mengarahkan plugin ke direktori install make. Secara default terlihat di / usr / bin / make
Taylor Liss
5
Saya sudah mencoba metode Anda, tetapi ini hanya memberi peluang untuk membangun proyek Anda, bukan? Saya tidak dapat menjalankan aplikasi yang dibuat dengan plugin ini, atau apakah saya melewatkan sesuatu? Saya punya proyek yang memiliki Makefile yang cukup kompleks dan saya tidak ingin menulis file CMake untuk itu tetapi saya ingin men-debug-nya menggunakan CLion ...
blacktemplar
@blacktemplar Saya tidak tahu apakah Anda dapat menggunakan semua alat debugging dari CLion, tapi saya harus dapat mengkompilasi dan men-debug file biner yang dibuat dengan metode di atas. Saya hanya bermain sedikit dengannya dan saya bisa menggunakan tombol kontrol langkah misalnya.
iled
2
Untuk konfigurasi yang lebih kompleks, ini jauh lebih mudah daripada jawaban yang diterima. Mengedit makefile hanya untuk menjalankan makefile itu gila!
Kevin
1
Bagaimana Anda menjalankan biner yang dihasilkan di clion? Saya membuat konfigurasi baru untuk Aplikasi, lalu menargetkan: Semua target, Dapat dijalankan: nama biner, namun saya mendapatkan kesalahan ini: "Tidak dapat berjalan binarypada <default>"
Kennet Celeste
7

Versi terbaru memiliki dukungan yang lebih baik secara harfiah untuk Makefiles yang dihasilkan, melalui compiledb

Tiga langkah:

  1. instal compiledb

    pip install compiledb
    
  2. menjalankan make kering

    compiledb -n make 
    

    (lakukan autogen, konfigurasikan jika perlu)

  3. akan ada file compile_commands.json yang dihasilkan membuka proyek dan Anda akan melihat CLion akan memuat info dari file json. Jika Anda, CLion Anda masih mencoba menemukan CMakeLists.txt dan tidak dapat membaca compile_commands.json, coba hapus seluruh folder, unduh kembali file sumber, dan ulangi langkah 1,2,3

Orignal post: Bekerja dengan Makefile di CLion menggunakan Compilation DB

Fengggli
sumber
1
Nice the Jetbrains sedang menyelesaikan masalah, tetapi pada 16 November 2018 ini tidak berguna karena Anda tidak dapat men-debug executable yang dihasilkan.
gerardw
3

Untuk benar-benar menghindari penggunaan CMAKE, Anda dapat:

  1. Bangun proyek Anda seperti biasanya dengan Make through terminal.

  2. Ubah konfigurasi CLion Anda, buka (di bilah atas):
    Run -> Edit Configurations -> yourProjectFolder

  3. Ubah Executableke yang dibuat dengan Make

  4. Ubah Working directoryke folder yang menahan eksekusi Anda (jika perlu)

  5. Hapus Buildtugas di dalam Before launch:Activate tool windowkotak

Dan Anda sudah siap! Anda sekarang dapat menggunakan tombol debug setelah pembuatan manual Anda.

13013SwagR
sumber
1
Konfigurasi saya seperti yang Anda gambarkan itu mengatakan "Tidak ada yang membangun" meskipun dieksekusi diatur dan ada.
keledai
Itu benar. Anda harus membangun secara manual kemudian jalankan (tanpa bangunan). Perhatikan bahwa versi terbaru CLion tampaknya lebih baik mendukung MakeFiles. Solusi ini masih bekerja, tapi saya akan menganggap itu sebagai Usang
13013SwagR
Apa yang akan Anda sarankan untuk versi terbaru? Saya memiliki plugin makefile tetapi tidak menangani kompilasi / debugging.
keledai
Anda harus dapat mengkompilasi dan saya menduga debug juga dengan plugin Makefile. Lihat Dokumen Clion. . Padahal, saya sarankan Anda menggunakan CMake yang sepenuhnya didukung dan menghindari semua masalah. Anda juga dapat mengaturnya (saya pikir) dengan Template debug jarak jauh atau Anda menggunakan GDB langsung di konsol.
13013SwagR
1

Saat ini, hanya CMake yang didukung oleh CLion. Orang lain membangun sistem akan ditambahkan di masa depan, tetapi saat ini, Anda hanya dapat menggunakan CMake.

Alat importir telah diterapkan untuk membantu Anda menggunakan CMake.

Edit:

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

GauthierPLM
sumber
Melihat bahwa pos ini telah keluar selama sebulan sekarang, dan ini adalah satu-satunya tanggapan, saya yakin Anda benar, sayangnya ...
hlin117
Menggali lebih dalam ke sumber komentar, saya menemukan ini: youtrack.jetbrains.com/issue/CPP-494#tab=Comments
hlin117
bagaimana jika Anda tidak ingin menggunakan cmake?
Enerccio
1

Saya tidak terlalu mengenal CMake dan tidak bisa menggunakan solusi Mondkin secara langsung.

Inilah yang saya temukan di CMakeLists.txt menggunakan versi terbaru CLion (1.2.4) dan MinGW di Windows (saya kira Anda hanya perlu mengganti semua: g ++ mytest.cpp -o bin / mytest dengan make if Anda tidak menggunakan pengaturan yang sama):

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

Dan custom Makefile seperti ini (terletak di root proyek saya dan menghasilkan executable di direktori bin):

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

Saya dapat membangun executable dan kesalahan di jendela log dapat diklik.

Petunjuk dalam IDE cukup terbatas, yang merupakan batasan besar dibandingkan dengan proyek CMake murni ...

Jérémy
sumber
Ini berhasil untuk saya. Saya bisa membuat CLion mengenali file sumber saya sebagai "aktif" dengan memasukkan semuanya ke dalam saya set(SOURCE_FILES all_files_here.c)dan kemudian menambahkan add_executable(foobar_cmake ${SOURCE_FILES})di samping target kustom. Kemudian pastikan CLion diatur untuk membangun / menjalankan target kustom Anda dan bukan _cmake satu.
Kevin Mark