在我的項目我有一個makefile,看起來像這樣:make目標
CXX = clang++
CFLAGS = -std=c++11
COMMON_SOURCES = file1.cpp file2.cpp
TARGET_SOURCES = main.cpp
TEST_SOURCES = run_tests.cpp test_file1.cpp test_file2.cpp
COMMON_OBJECTS = $(COMMON_SOURCES:.c=.o)
TARGET_OBJECTS = $(TARGET_SOURCES:.c=.o)
TEST_OBJECTS = $(TEST_SOURCES:.c=.o)
EXECUTABLE = build/application
TEST_EXECUTABLE = build/tests
.PHONY: all target tests
all: target tests
target: $(EXECUTABLE)
tests: $(TEST_EXECUTABLE)
clean:
rm build/tests & rm build/application &
$(EXECUTABLE): $(COMMON_OBJECTS) $(TARGET_OBJECTS)
$(CXX) $(CFLAGS) $(LDFLAGS) $^ -o [email protected]
$(TEST_EXECUTABLE): $(COMMON_OBJECTS) $(TEST_OBJECTS)
$(CXX) $(CFLAGS) $(LDFLAGS) $^ -o [email protected]
.c.o:
$(CXX) $(CFLAGS) $< -o [email protected]
這讓我跑make tests
或make target
,它會建立相應的可執行文件。
如何設置一個CMakeLists文件以獲得相同的方便構建系統?
我得到的錯誤'add_executable調用的arguments' 不正確的數字也許是一個基本的步驟,我不知道嗎?我對cmake知之甚少。 –
對不起,我剛剛用'SOURCES'替換了'OBJECTS',它工作正常。 –
是的,對不起。當我把你的makefile邏輯轉錄到cmake時一個粗心的錯誤。我只是用這個更正來編輯我的答案。 – Phil