后端技术_Makefile_cmake_configure
最近更新:2024-09-23
|
字数总计:726
|
阅读估时:3分钟
|
阅读量: 次
Makefile 简单makefile 含依赖的makefile 伪对象.PHONY 变量定义 自动变量 利用自动变量实现自动添加文件编译 CMake 单个目录 子目录 多目录
Makefile 简单makefile 1 2 3 4 5 6 7 all: @echo "hello all" test: @echo "hello test" - make - make test
含依赖的makefile 1 2 3 4 5 6 7 8 9 10 simple: main.o foo.o gcc -o simple main.o foo.o main.o : main.c gcc -o main.o -c main.c foo.o : foo.c gcc -o foo.o -c foo.c clean : rm simple main.o foo.o - make
伪对象.PHONY 1 2 3 .PHONY : main clean # 假如这个不写,如果当前目录有clean这个文件,将会提示clean is up to date。clean: rm simple main.o foo.o
变量定义 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 .PHONY : cleanCC = gcc RM = rm EXE = simple OBJS = main.o foo.o DEBUG = -g CFLAGS = $(DEBUG) -Wall -c $(EXE) : $(OBJS) $(CC) -o $(EXE) $(OBJS) main.o : main.c $(CC) $(CFLAGS) -o main.o -c main.c foo.o : foo.c $(CC) $(CFLAGS) -o foo.o -c foo.c clean: $(RM) $(EXE) $(OBJS)
自动变量 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 .PHONY all all: first second third @echo "\$$@ = $@ " @echo "$$^ = $^ " @echo "$$< = $< " first: @echo "1 first" second: @echo "2 second" third: @echo "3 third"
利用自动变量实现自动添加文件编译 1 2 3 4 5 6 7 8 9 10 11 12 13 .PHONY : cleanCC = gcc RM = rm EXE = simple SRCS = $(wildcard *.c) OBJS = $(patsubst %.c, %.o, $(SRCS) ) $(EXE) : $(OBJS) $(CC) -o $@ $^ %.o: %.c $(CC) -o $@ -c $^ clean: $(RM) $(EXE) $(OBJS)
CMake
单个目录 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 cmake_minimum_required (VERSION 2.8) PROJECT(Darren) SET(SRC_LIST main.c) set(SRC_LIST2 main2.c) MESSAGE(STATUS "PROJECT_BINARY_DIR DIR " ${PROJECT_BINARY_DIR}) MESSAGE(STATUS "PROJECT_SOURCE_DIR DIR " ${PROJECT_SOURCE_DIR}) ADD_EXECUTABLE(0voice ${SRC_LIST}) ADD_EXECUTABLE(0voice2 ${SRC_LIST2})
1 2 3 mkdir buildcd buildcmake ..
子目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 cmake_minimum_required (VERSION 2.8) PROJECT(0VOICE) MESSAGE(STATUS "0voice top PROJECT_BINARY_DIR " ${PROJECT_BINARY_DIR}) MESSAGE(STATUS "0voice top PROJECT_SOURCE_DIR " ${PROJECT_SOURCE_DIR}) MESSAGE(STATUS "0voice top CMAKE_CURRENT_SOURCE_DIR " ${CMAKE_CURRENT_SOURCE_DIR}) ADD_SUBDIRECTORY(src) INSTALL(DIRECTORY doc/ DESTINATION share/doc/cmake/0voice)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 cmake_minimum_required (VERSION 2.8) SET(SRC_LIST main.c) MESSAGE(STATUS "0voice sub PROJECT_BINARY_DIR " ${PROJECT_BINARY_DIR}) MESSAGE(STATUS "0voice sub PROJECT_SOURCE_DIR " ${PROJECT_SOURCE_DIR}) MESSAGE(STATUS "0voice sub CMAKE_CURRENT_SOURCE_DIR " ${CMAKE_CURRENT_SOURCE_DIR}) ADD_EXECUTABLE(youzi ${SRC_LIST}) ADD_EXECUTABLE(youzi2 ${SRC_LIST}) INSTALL(TARGETS youzi RUNTIME DESTINATION bin) INSTALL(TARGETS youzi2 RUNTIME DESTINATION bin)
多目录
INCLUDE_DIRECTORIES 找头文件
ADD_SUBDIRECTORY 添加子目录
ADD_LIBRARY 生成库文件
TARGET_LINK_LIBRARIES 链接库到执行文件上1 2 3 4 5 INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/dir1" ) ADD_SUBDIRECTORY("${CMAKE_CURRENT_SOURCE_DIR}/dir1" ) ADD_LIBRARY(hello_shared SHARED libHelloSLAM.cpp) ADD_LIBRARY(hello_static STATIC libHelloSLAM.cpp) TARGET_LINK_LIBRARIES(darren dir1 dir2)
2024-03-30
该篇文章被 Cleofwine
归为分类:
服务端