我想用 makefile 来制作我的主程序和测试程序。
我尝试运行此 make 命令,但它仅编译
library_management
:
# Compiler and flags
CXX = g++
CXXFLAGS = -std=c++11 -Iinclude
# Directories
SRC_DIR = src
INCLUDE_DIR = include
TEST_DIR = tests
# Executables
MAIN_EXEC = library_management
TEST_EXEC = library_test
# Source files
MAIN_SRC = $(SRC_DIR)/main.cpp $(SRC_DIR)/Book.cpp $(SRC_DIR)/Library.cpp
TEST_SRC = $(TEST_DIR)/LibraryTest.cpp $(SRC_DIR)/Book.cpp $(SRC_DIR)/Library.cpp
# Build main program
$(MAIN_EXEC): $(MAIN_SRC)
$(CXX) $(CXXFLAGS) -o $(MAIN_EXEC) $(MAIN_SRC)
# Build test program
$(TEST_EXEC): $(TEST_SRC)
$(CXX) $(CXXFLAGS) -o $(TEST_EXEC) $(TEST_SRC)
我找到了一种用其他命令制作每个项目的方法。但随后我需要运行
make
和 make test
命令来制作这两个项目。
# Default target: build only the main program
all: $(MAIN_EXEC)
# Build main program
$(MAIN_EXEC): $(MAIN_SRC)
$(CXX) $(CXXFLAGS) -o $(MAIN_EXEC) $(MAIN_SRC)
# Build test program
test: $(TEST_EXEC)
$(TEST_EXEC): $(TEST_SRC)
$(CXX) $(CXXFLAGS) -o $(TEST_EXEC) $(TEST_SRC)
是否可以选择在一个 make 命令中创建两个项目?
谢谢!
正如 @some-programmer-dude 评论的那样,我将这两个项目添加到了 all 命令中,现在它正在制作这两个项目:
# Default target: build only the main program
all:$(MAIN_EXEC) $(TEST_EXEC)
# Build main program
$(MAIN_EXEC): $(MAIN_SRC)
$(CXX) $(CXXFLAGS) -o $(MAIN_EXEC) $(MAIN_SRC)
# Build test program
# test: $(TEST_EXEC)
$(TEST_EXEC): $(TEST_SRC)
$(CXX) $(CXXFLAGS) -o $(TEST_EXEC) $(TEST_SRC)