CMake 대신 CLion에 로컬 makefile 사용


148

CMake 대신 로컬 makefile을 사용하여 코드를 컴파일하도록 CLion을 구성하는 방법이 있습니까? 빌드 옵션에서 방법을 찾지 못하는 것 같습니다.

답변:


142

업데이트 : CLion 2020.2를 사용중인 경우 이미 Makefile을 지원합니다. 이전 버전을 사용중인 경우 계속 읽으십시오.


현재 CMake 만 지원되지만 CMake에게 makecustom 으로 전화하도록 지시 할 수 있습니다 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})

CLion's디렉토리에 실행 파일을 생성하도록 지시하십시오.

이것은 샘플입니다 Makefile.

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

즉, 프로그램의 작업 디렉토리를 변경하여 디렉토리 내부에서 make를 실행할 때와 같이 실행되도록 할 수도 있습니다. 이 편집의 경우 :Run -> Edit Configurations ... -> mytest -> Working directory


위의 제안을 아직 시도하지 않았지만 CLion 내에서 C / C ++ 프로그램을 실행할 수 있습니까? (이로 인해 디버깅 프로세스가 훨씬 쉬워집니다.)
hlin117

3
@Mondkin의 솔루션이 작동하는지 확인했습니다. 당신이를 수정 한 후 프로젝트를 빌드하는 데 문제가있는 경우 MakefileCMakeLists.txt, 개량하려고 *.cpp파일을. 이것은 CLion이 처음부터 모든 것을 구축하게 할 것입니다.
hlin117

이것은 작동하지만 구성에 "make clean"을 추가하려고하면 실패합니다.
71GA

1
참고로 적어도 일부 프로젝트 (예 : redis) 에서이 작업을 수행하려면 'ALL'을 추가하여 다음과 같이 만들어야합니다. )
데커


33

이것은 가장 투표가 많은 기능 요청 중 하나 이지만 Victor Kropp가 제공하는 플러그인 중 하나 가 makefile에 대한 지원을 추가합니다.

IntelliJ IDEA를위한 Makefile 지원 플러그인

설치

공식 저장소에서 직접 설치할 수 있습니다.

설정> 플러그인> 검색 makefile> 저장소에서 검색> 설치> 다시 시작

사용하다

실행하는 방법에는 적어도 세 가지가 있습니다.

  1. makefile을 마우스 오른쪽 단추로 클릭하고 실행을 선택 하십시오.
  2. 편집기에서 makefile을 열고 커서를 하나의 대상 (행의 임의의 위치)에 놓고 alt+ enter를 누른 다음 make 를 선택하십시오. target
  3. 대상에서 ctrl/ cmd+ shift+ F10를 누르십시오 (Mac에서는 작동하지 않지만).

출력과 함께 Run target 이라는 창이 열립니다 .


2
이 경로로 가면 설정-> make로 이동하여 플러그인이 make의 설치 디렉토리를 가리 키도록하십시오. 기본적으로 / usr / bin / make에 있습니다
Taylor Liss

5
나는 당신의 방법을 시도했지만 이것이 프로젝트를 만들 수있는 기회만을 제공합니다. 이 플러그인으로 make로 빌드 한 응용 프로그램을 실행할 수 없거나 뭔가 빠졌습니까? 꽤 복잡한 Makefile이있는 프로젝트가 있는데 CMake 파일을 작성하고 싶지 않지만 CLion을 사용하여 디버깅하고 싶습니다.
blacktemplar

@blacktemplar CLion의 모든 디버깅 도구를 사용할 수 있는지 모르겠지만 위의 방법으로 만든 이진 파일을 컴파일하고 디버깅 할 수 있어야합니다. 방금 조금 연주했고 예를 들어 단계 제어 버튼을 사용할 수있었습니다.
17:21에 iled

2
더 복잡한 구성의 경우 허용되는 답변보다 훨씬 쉽습니다. 그 makefile을 실행하기 위해 makefile을 편집하는 것은 광기입니다!
Kevin

1
생성 된 바이너리를 clion으로 어떻게 실행 했습니까? Application에 대한 새 구성을 만든 다음 대상 : All targets, Executable : 바이너리 이름이지만 " binary<default>에서 실행할 수 없습니다"라는 오류가 표시됩니다.
Kennet Celeste

7

최신 버전은 컴파일 된 b를 통해 생성 된 모든 Makefile을 문자 그대로 더 잘 지원합니다.

세 단계 :

  1. 컴파일 된 설치

    pip install compiledb
    
  2. 드라이 메이크를하다

    compiledb -n make 
    

    (자동 생성을 수행하고 필요한 경우 구성하십시오)

  3. compile_commands.json 파일이 생성되어 프로젝트를 열면 CLion이 json 파일에서 정보를로드하는 것을 볼 수 있습니다. CLion이 여전히 CMakeLists.txt를 찾으려고 compile_commands.json을 읽을 수없는 경우 전체 폴더를 제거하고 소스 파일을 다시 다운로드 한 후 1,2,3 단계를 다시 시도하십시오.

Orignal post : Compilation DB를 사용하여 CLion에서 Makefile 작업


1
Jetbrains가 문제를 일으키는 것은 좋지만 2018 년 11 월 16 일부터 생성 된 실행 파일을 디버깅 할 수 없으므로 유용하지 않습니다.
gerardw

3

CMAKE 사용을 완전히 피하려면 다음을 수행하십시오.

  1. 터미널을 통한 Make를 사용하여 평소대로 프로젝트를 빌드하십시오.

  2. CLion 구성을 변경하고 (맨 위 바)로 이동하십시오.
    Run -> Edit Configurations -> yourProjectFolder

  3. 변경 Executable를 사용하여 생성 된 것으로

  4. 변경 Working directory실행 파일이 들어있는 폴더로 (필요한 경우).

  5. 에서 Build작업을 제거하십시오Before launch:Activate tool window상자

그리고 당신은 모두 설정되었습니다! 이제 수동 빌드 후에 디버그 버튼을 사용할 수 있습니다.


1
설명한대로 실행 파일이 설정되어 있고 존재하더라도 "구성 할 대상이 없습니다"라는 구성이 있습니다.
당나귀

맞아 그거야. 빌드하지 않고 수동으로 빌드 한 다음 실행해야합니다. CLion의 최신 버전은 MakeFiles를 더 잘 지원하는 것으로 보입니다. 이 솔루션은 여전히 작동,하지만 난으로 고려할 것 추천하지 않습니다
13013SwagR

최신 버전으로 무엇을 제안 하시겠습니까? makefile 플러그인이 있지만 컴파일 / 디버깅을 처리하지 않습니다.
당나귀

컴파일 할 수 있어야하고 Makefile 플러그인으로 디버그를 추측하고 있습니다. Clion Doc을 참조하십시오 . . 그러나 완전히 지원되고 모든 문제를 피하는 CMake를 사용하는 것이 좋습니다. 원격 디버그 템플릿으로 설정하거나 콘솔에서 직접 GDB를 사용할 수도 있습니다.
13013SwagR

1

현재 CLion은 CMake 만 지원합니다. 다른 빌드 시스템도 향후에 추가 될 예정이지만 현재 CMake 만 사용할 수 있습니다.

CMake를 사용하는 데 도움이되는 가져 오기 도구가 구현되었습니다.

편집하다:

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


이 게시물이 지금 한 달 동안 나 왔으며 이것이 유일한 답변입니다. 불행히도 당신이 맞다고 확신합니다 ...
hlin117

댓글의 출처를 더 깊이 파고 들어 이것을 발견했습니다 : youtrack.jetbrains.com/issue/CPP-494#tab= 댓글
hlin117

cmake를 사용하지 않으려면 어떻게해야합니까?
Enerccio

1

CMake에 익숙하지 않아 Mondkin의 솔루션을 직접 사용할 수 없습니다.

다음은 Windows에서 최신 버전의 CLion (1.2.4) 및 MinGW를 사용하여 CMakeLists.txt에서 얻은 것입니다 (모두를 바꿔야한다고 생각합니다 : g ++ mytest.cpp -o bin / mytest by 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 대상이 아닌 사용자 정의 대상을 빌드 / 실행하도록 설정되어 있는지 확인하십시오.
케빈 마크
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.