이 질문이 파일 의 샘플 Makefile출력에 관한 것이라면 CMakeList.txtcmake-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 규칙
에서 대신 사용된다 . 유사 기능 외에도 체인을 제공하십시오. 내 미니멀리즘 은 다음과 같이 보일 것입니다.Makefilerules and recipesfunctionsfunctionrules and recipesMakefile
-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-configconfigure_file
cmake --build . --config "Release"
option기능을 사용하여 몇 가지 구성 가능한 옵션을 추가 할 수 있습니다 .
Makefile 구성 / 조정
어떤 식 으로든 디버그 플래그로 컴파일해야한다면 다음 make과 같이 호출 할 수 있습니다 .
make CXXFLAGS=NDEBUG
나는 내부 변수를 생각 Makefile-rules하고 CMake-functions더 파고와 비교, 행운을 위해 좋은 시작이다.
cmake이것을 원했다. 그러나 기능이 서로 잘 매핑되지 않기 때문에 찾을 수 있을지 의문입니다. 당신이처럼cmake행동 하려고하면make, 당신은 자신을 미치게 만들 것입니다. 처음부터 시작하는 것이 가장 좋습니다. 에서 사소한 것은make에 상당히 관련되어cmake있으며 그 반대의 경우도 마찬가지입니다.