Sử dụng tệp tạo tệp cục bộ cho CLion thay vì CMake


148

Có cách nào để cấu hình CLion sử dụng tệp tạo tệp cục bộ để biên dịch mã, thay vì CMake không? Tôi dường như không thể tìm ra cách để làm điều đó từ các tùy chọn xây dựng.

Câu trả lời:


142

Cập nhật: Nếu bạn đang sử dụng CLion 2020.2, thì nó đã hỗ trợ Makefiles. Nếu bạn đang sử dụng một phiên bản cũ hơn, hãy đọc tiếp.


Mặc dù hiện tại chỉ có CMake được hỗ trợ, bạn có thể hướng dẫn CMake gọi makevới tùy chỉnh của mình Makefile. Chỉnh sửa CMakeLists.txtthêm một trong hai lệnh sau:

Khi bạn yêu CLioncầu chạy chương trình của mình, nó sẽ cố gắng tìm một tệp thực thi có cùng tên của mục tiêu trong thư mục được chỉ bởi PROJECT_BINARY_DIR. Vì vậy, miễn là bạn maketạo tệp nơi CLionmong đợi, sẽ không có vấn đề gì.

Dưới đây là một ví dụ hoạt động:

Yêu cầu CLionchuyển $ (PRO DỰ_BINARY_DIR) của nó chomake

Đây là mẫu 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 để tạo tệp thực thi trong CLion'sthư mục

Đây là mẫu Makefile:

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

Đó là tất cả, bạn cũng có thể muốn thay đổi thư mục làm việc của chương trình để nó thực thi như khi bạn chạy make từ bên trong thư mục của bạn. Đối với chỉnh sửa này:Run -> Edit Configurations ... -> mytest -> Working directory


Tôi chưa thử đề xuất trên của bạn, nhưng tôi có thể thực hiện các chương trình C / C ++ của mình trong CLion không nếu tôi làm như vậy? (Điều này sẽ làm cho quá trình gỡ lỗi trở nên dễ dàng hơn.)
hlin117

3
Tôi đã xác minh rằng giải pháp của @ Mondkin hoạt động. Nếu bạn gặp sự cố khi xây dựng dự án sau khi sửa đổi MakefileCMakeLists.txt, hãy thử sửa đổi *.cpptệp. Điều này sẽ khiến CLion xây dựng mọi thứ từ đầu.
hlin117

Điều này hoạt động, nhưng khi tôi cố gắng thêm "làm sạch" vào cấu hình thì nó thất bại.
71GA

1
FYI Để làm cho điều này hoạt động, ít nhất là trên một số dự án, (ví dụ như redis), bạn phải thêm một 'TẤT CẢ', làm cho nó: add_custom_target (mytest ALL LỰA -C $ {mytest_SOURCE_DIR} CLION_EXE_DIR = $ {PRO DỰ_B )
Decker

1
Tôi nên thay đổi gì để làm cho nó hoạt động với gcc cho C
Romain-p

33

Trong khi đây là một trong những bình chọn nhiều nhất yêu cầu tính năng được , nhưng có một plugin có sẵn, bởi Victor Kropp , có thêm hỗ trợ cho tệp thực hiện:

Plugin hỗ trợ Makefile cho IntelliJ IDEA

Tải về

Bạn có thể cài đặt trực tiếp từ kho chính thức:

Cài đặt> Plugin> tìm kiếm makefile> Tìm kiếm trong kho> Cài đặt> Khởi động lại

Sử dụng

Có ít nhất ba cách khác nhau để chạy:

  1. Nhấp chuột phải vào tệp Makefile và chọn Run
  2. Mở tệp Makefile trong trình chỉnh sửa, đặt con trỏ lên một mục tiêu (bất kỳ vị trí nào trên dòng), nhấn alt+ enter, sau đó chọn tạo mục tiêu
  3. Nhấn ctrl/ cmd+ shift+ F10vào mục tiêu (mặc dù mục này không hoạt động với tôi trên máy mac).

Nó mở một khung có tên Run target với đầu ra.


2
Chỉ cần một headup, nếu bạn đi theo lộ trình này, hãy đảm bảo bạn đi vào cài đặt-> thực hiện và đảm bảo rằng bạn trỏ plugin vào thư mục cài đặt của make. Theo mặc định, nó trông trong / usr / bin / make
Taylor Liss

5
Tôi đã thử phương pháp của bạn, nhưng điều này chỉ mang lại cơ hội để xây dựng dự án của bạn, phải không? Tôi không thể chạy một ứng dụng được xây dựng bằng make với plugin này hoặc tôi có bỏ lỡ điều gì không? Tôi có một dự án có Makefile khá phức tạp và tôi không muốn viết tệp CMake cho nó nhưng tôi muốn gỡ lỗi bằng CLion ...
blacktemplar

@blacktemplar Tôi không biết liệu bạn có thể sử dụng tất cả các công cụ gỡ lỗi từ CLion hay không, nhưng tôi sẽ có thể biên dịch và gỡ lỗi một tệp nhị phân được tạo bằng phương pháp trên. Tôi chỉ chơi một chút với nó và tôi có thể sử dụng các nút điều khiển bước chẳng hạn.
iled

2
Đối với các cấu hình phức tạp hơn, điều này dễ dàng hơn nhiều so với câu trả lời được chấp nhận. Chỉnh sửa makefile chỉ để chạy makefile đó là điên rồ!
Kevin

1
Làm thế nào bạn chạy nhị phân được tạo trong clion? Tôi tạo một cấu hình mới cho Ứng dụng, sau đó nhắm mục tiêu: Tất cả các mục tiêu, Có thể thực thi: tên của nhị phân, nhưng tôi gặp lỗi này: "Không thể chạy binarytrên <default>"
Kennet Celeste

7

Phiên bản mới nhất có hỗ trợ tốt hơn theo nghĩa đen cho mọi Makefiles được tạo, thông qua trình biên dịch

Ba bước:

  1. cài đặt compb

    pip install compiledb
    
  2. chạy khô

    compiledb -n make 
    

    (làm autogen, cấu hình nếu cần)

  3. sẽ có một tệp compile_commands.json được tạo để mở dự án và bạn sẽ thấy CLion sẽ tải thông tin từ tệp json. Nếu CLion của bạn vẫn cố gắng tìm CMakeLists.txt và không thể đọc compile_commands.json, hãy thử xóa toàn bộ thư mục, tải xuống lại các tệp nguồn và làm lại bước 1,2,3

Bài đăng gốc: Làm việc với Makefiles trong CLion bằng Compilation DB


1
Rất vui, Jetbrains đang xử lý sự cố, nhưng kể từ ngày 16 tháng 11 năm 2018, nó không hữu ích vì bạn không thể gỡ lỗi chương trình thực thi được tạo.
gerardw

3

Để hoàn toàn tránh sử dụng CMAKE, bạn có thể chỉ cần:

  1. Xây dựng dự án của bạn như bình thường với Make thông qua thiết bị đầu cuối.

  2. Thay đổi cấu hình CLion của bạn, đi đến (ở thanh trên cùng):
    Run -> Edit Configurations -> yourProjectFolder

  3. Thay đổi Executablecái được tạo bằng Make

  4. Thay đổi Working directorythư mục giữ tệp thực thi của bạn (nếu cần)

  5. Hủy bỏ Buildnhiệm vụ trong Before launch:Activate tool windowhộp

Và bạn đã sẵn sàng! Bây giờ bạn có thể sử dụng nút gỡ lỗi sau khi xây dựng thủ công.


1
Cấu hình của tôi như bạn mô tả có nội dung "Không có gì để xây dựng" mặc dù tệp thực thi được đặt và tồn tại.
con lừa

Đúng vậy Bạn nên xây dựng thủ công sau đó chạy (không cần xây dựng). Lưu ý rằng phiên bản mới nhất của CLion dường như hỗ trợ MakeFiles tốt hơn. Giải pháp này vẫn hoạt động, nhưng tôi sẽ coi nó là Không dùng nữa
13013SwagR

Bạn muốn đề xuất gì cho phiên bản mới nhất? Tôi có plugin makefile nhưng nó không xử lý biên dịch / gỡ lỗi.
con lừa

Bạn sẽ có thể biên dịch và tôi đoán cũng như gỡ lỗi với plugin Makefile. Xem tài liệu Clion. . Mặc dù vậy, tôi khuyên bạn nên sử dụng CMake được hỗ trợ đầy đủ và tránh mọi rắc rối. Bạn cũng có thể thiết lập nó (tôi nghĩ) với Mẫu gỡ lỗi từ xa hoặc bạn sử dụng GDB trực tiếp trong bảng điều khiển.
13013SwagR

1

Hiện tại, chỉ CMake được CLion hỗ trợ. Các hệ thống xây dựng khác sẽ được thêm vào trong tương lai, nhưng hiện tại, bạn chỉ có thể sử dụng CMake.

Một công cụ nhập khẩu đã được triển khai để giúp bạn sử dụng CMake.

Biên tập:

Nguồn: http://blog.jetbrains.com/clion/2014/09/clion-answers-frequently-asked-questions/


Thấy rằng bài đăng này đã được phát hành một tháng nay và đây là phản hồi duy nhất, tôi tin chắc rằng bạn đã đúng, thật không may ...
hlin117

Tìm hiểu sâu hơn về nguồn bình luận, tôi đã tìm thấy điều này: youtrack.jetbrains.com/su/CPP-494#tab=Comments
hlin117

Nếu bạn không muốn sử dụng cmake thì sao?
Enerccio

1

Tôi không rành lắm về CMake và không thể sử dụng trực tiếp giải pháp của Mondkin.

Đây là những gì tôi đã đưa ra trong CMakeLists.txt của mình bằng phiên bản mới nhất của CLion (1.2.4) và MinGW trên Windows (Tôi đoán bạn sẽ chỉ cần thay thế tất cả: g ++ mytest.cpp -o bin / mytest bằng cách thực hiện nếu bạn không sử dụng cùng một thiết lập):

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

Và Makefile tùy chỉnh giống như thế này (nó nằm ở thư mục gốc của dự án của tôi và tạo tệp thực thi trong thư mục bin):

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

Tôi có thể xây dựng tệp thực thi và các lỗi trong cửa sổ nhật ký có thể nhấp được.

Gợi ý trong IDE khá hạn chế, đó là một hạn chế lớn so với các dự án CMake thuần túy ...


Điều này làm việc cho tôi. Tôi đã có thể khiến CLion nhận ra các tệp nguồn của mình là "hoạt động" bằng cách đưa tất cả chúng vào trong tôi set(SOURCE_FILES all_files_here.c)và sau đó thêm add_executable(foobar_cmake ${SOURCE_FILES})vào mục tiêu tùy chỉnh. Sau đó, chỉ cần đảm bảo CLion được thiết lập để xây dựng / chạy mục tiêu tùy chỉnh của bạn chứ không phải mục tiêu _cmake.
Kevin Mark
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.