我正在尝试构建一个复制我一直使用的Makefile的CMake文件。我的教授为我们提供了一个可以使用的CMakeLists.txt工作,但是我试图对它进行自定义,因此它的行为与我的Makefile相同,因为我为每个构建使用不同的标志。
这是我的Makefile:
OBJS = Assign1.cpp
CC = g++
DEBUG_FLAGS = -O0 -g3 -fsanitize=address
RELEASE_FLAGS = -O3 -g0
FLAGS = -std=c++14 -Wall -Wextra
release: $(OBJS)
$(CC) $(RELEASE_FLAGS) $(FLAGS) $(OBJS) -o Assign1
debug: $(OBJS)
$(CC) $(DEBUG_FLAGS) $(FLAGS) $(OBJS) -o debug && cgdb ./debug
在命令行中,我只需键入make
,它就会自动默认释放。如果我输入make debug
,它将进行调试并在可执行文件上运行cgdb。
我已尝试对我的CMake文件执行相同的操作,但如果这是正确的术语,我不知道如何设置/运行不同的可执行文件。这是我的Cmake文件:
cmake_minimum_required(VERSION 3.5)
project(Assignment2)
set(RELEASE "-O3 -g0")
set(DEBUG "-O0 -g3 -fsanitize=address")
set(CMAKE_CXX_FLAGS "-std=c++14 -Wall -Wextra")
set(SOURCE_FILES main.cpp compute-e.hpp compute-e.cpp compute-fib.cpp compute-fib.hpp compute-pi.cpp compute-pi.hpp)
add_executable(Assign2 ${RELEASE} ${CMAKE_CXX_FLAGS} ${SOURCE_FILES})
add_executable(debug ${DEBUG} ${CMAKE_CXX_FLAGS} ${SOURCE_FILES} && cgdb ./debug)
我需要做些什么才能让它发挥作用?我理解Makefile比我做CMake文件更好。