我對makefile很新,但想用一些單元測試創建一個C++項目。Makefile創建幾個電源作爲單元測試C++
我的項目目錄如下:
makefile
src/
main.cpp
file1.cpp
file1.h
file2.cpp
file2.h
...
test/
file1_test.cpp
file2_test.cpp
...
我希望Makefile編譯程序的src /並編譯在我的測試/目錄下的程序。每個* _test.cpp文件都包含一個main()函數。我嘗試了很多東西,但每次我嘗試編譯時遇到了一些新問題,感覺它應該是一件相當簡單的事情。
感謝您的幫助(順便說一句,我被這個教程http://c.learncodethehardway.org/book/ex28.html啓發)!
編輯:
我現在的makefile文件看起來是這樣的。 (我不得不做一些更改以適應這個更一般的例子)
CFLAGS =
LIBS =
LDFLAGS = -L/usr/local/
CC = g++
SOURCES=$(wildcard src/**/*.cpp src/*.cpp)
OBJECTS=$(patsubst %.cpp,%.o,$(SOURCES))
TARGET=build/MyProgram
TEST_SRC=$(wildcard test/*_test.cpp)
TESTS=$(patsubst %.cpp,%.o,$(TEST_SRC))
TESTS_PRG=$(patsubst %.cpp,%,$(TEST_SRC))
TESTS_OBJ=$(patsubst test/%_test.cpp,src/%.o,$(TEST_SRC))
all: $(TARGET)
$(TARGET): build $(OBJECTS)
g++ -o $(OBJECTS) $(CFLAS) $(LIBS)
build:
@mkdir -p build
@mkdir -p bin
.PHONY: tests
tests: $(TESTS_OBJ)
g++ $(TESTS_OBJ) $(CFLAGS) -o $(TESTS_PRG)
clean:
rm -rf build $(OBJECTS)
rm -f tests/tests.log
find . -name "*.gc*" -exec rm {} \;
rm -rf `find . -name "*.dSYM" -print`
你目前的makefile是什麼樣的? – 2014-12-05 20:31:40
你應該發佈你的makefile,並考慮使用CMake和CTest。 – yayuj 2014-12-05 20:35:48
是否有一個特定的原因,您沒有使用automake並進行檢查? – midor 2014-12-05 20:58:52