이 질문이 파일 의 샘플 Makefile
출력에 관한 것이라면 CMakeList.txt
cmake-backend 소스를 확인하고 그러한 Makefile
. @Roberto의 회신에 추가하지 않으면 세부 정보를 숨기고 간단하게 만들려고합니다.
CMake 함수
Make
규칙 및 레시피를위한 유연한 도구 이지만 CMake
구성 기능도 추가하는 추상화 계층입니다.
내 평야 CMakeLists.txt
는 다음과 같이 보일 것입니다.
cmake_minimum_required(VERSION 2.8)
project(example)
file(GLOB testapp_SOURCES *.cc)
add_executable(testapp ${testapp_SOURCES})
빌드 를 CMake
숨길 how
수 있습니다. 우리 what
는 입력과 출력 만을 지정했습니다 .
CMakeLists.txt
에 정의 된 함수 호출 목록 이 포함됩니다 cmake
.
(CMake 기능) Vs Make 규칙
에서 대신 사용된다 . 유사 기능 외에도 체인을 제공하십시오. 내 미니멀리즘 은 다음과 같이 보일 것입니다.Makefile
rules and recipes
functions
function
rules and recipes
Makefile
-include "executable.mk"
TARGETS=testapp.bin
all:${TARGETS}
(가) 동안 executable.mk
다음과 같이 표시됩니다,
SOURCES=$(wildcard *.cpp)
OBJECTS=$(SOURCES:.cpp=.o)
DEPS=$(SOURCES:.cpp=.d)
%.bin:$(OBJECTS)
$(CC) $(CFLAGS) -o $@ $^ $(LFLAGS) $(LIBS)
.PHONY: all clean
clean:
$(RM) $(OBJECTS) $(DEPS) $(TARGETS)
-include $(DEPS)
처음부터 Makefile
다음과 같이 시작하겠습니다 .
all: testapp.bin
testapp.bin:sourcea.o sourcb.o
$(CC) $(CFLAGS) -o $@ $^ $(LFLAGS) $(LIBS)
.PHONY: all clean
clean:
$(RM) $(OBJECTS) testapp.bin
여기 에서이 스 니펫을 가져와 수정했습니다. 일부 암시 적 규칙이이 파일에 추가되며 이는 makefile-documentation에서 찾을 수 있습니다. 일부 암시 적 변수도 여기에 관련됩니다.
참고, Makefile
세부 사항 제공 recipe
보여주는 how
빌드가 수행 할 수 있습니다. executable.mk
하나의 파일에 정의 된 세부 사항을 유지하기 위해 쓸 수 있습니다. 이런 식으로 앞에서 보여준 것처럼 makefile을 줄일 수 있습니다.
CMake
및 내부 변수Make
이제 조금 발전해 CMake
가면서 다음과 같이 컴파일러 플래그를 설정할 수 있습니다.
set(CMAKE_C_FLAGS "-Wall")
파일의 CMake
기본 변수에 대해 자세히 알아보십시오 CMakeCache.txt
. CMake
상기 코드에 해당 할 것이다 Make
아래 코드
CFLAGS = -Wall
주 CFLAGS
의 내부 변수 Make
와 동일한 방법으로, CMAKE_C_FLAGS
내부 변수이다 CMake
.
CMake에 포함 및 라이브러리 경로 추가
cmake
함수 를 사용하여 할 수 있습니다 .
target_include_directories(testapp PRIVATE "myincludes")
list(APPEND testapp_LIBRARIES
mytest mylibrarypath
)
target_link_libraries(testapp ${testapp_LIBRARIES})
Make에 포함 및 라이브러리 경로 추가 대
다음과 같은 줄을 추가하여 포함 및 라이브러리를 추가 할 수 있습니다.
INCLUDES += -Imyincludes
LIBS += -Lmylibrarypath -lmytest
위의 행은 자동 생성 도구 또는 pkg-config에서 생성 할 수 있습니다. (Makefile은 자동 구성 도구에 종속되지 않음)
CMake 구성 / tweek
일반적으로 기능 을 사용하여 도구 config.h
처럼 일부 파일 을 생성 할 수 있습니다. 사용자 정의 함수를 작성하는 더 많은 트릭을 수행 할 수 있습니다. 마지막으로 다음과 같은 구성을 선택할 수 있습니다.auto-config
configure_file
cmake --build . --config "Release"
option
기능을 사용하여 몇 가지 구성 가능한 옵션을 추가 할 수 있습니다 .
Makefile 구성 / 조정
어떤 식 으로든 디버그 플래그로 컴파일해야한다면 다음 make
과 같이 호출 할 수 있습니다 .
make CXXFLAGS=NDEBUG
나는 내부 변수를 생각 Makefile-rules
하고 CMake-functions
더 파고와 비교, 행운을 위해 좋은 시작이다.
cmake
이것을 원했다. 그러나 기능이 서로 잘 매핑되지 않기 때문에 찾을 수 있을지 의문입니다. 당신이처럼cmake
행동 하려고하면make
, 당신은 자신을 미치게 만들 것입니다. 처음부터 시작하는 것이 가장 좋습니다. 에서 사소한 것은make
에 상당히 관련되어cmake
있으며 그 반대의 경우도 마찬가지입니다.