C++ 如何构建c++;仅使用.h文件的程序
在中,有一个包含演示测试和文件的示例文件夹。在make文件夹中,有一个脚本,用于使用C++ 如何构建c++;仅使用.h文件的程序,c++,makefile,C++,Makefile,在中,有一个包含演示测试和文件的示例文件夹。在make文件夹中,有一个脚本,用于使用sample1.h和sample1.cc文件(以及sample1\u unittest.cc)构建程序 但是,示例文件夹中的第三个示例只有一个.h文件--sample3 inl.h,该文件内联了所有测试代码,即没有.cc文件。基于上面的例子,我试图构建它,就像你在下面看到的那样,但是当我运行make时,它说sample3.o不存在 问题:当所有代码都内联在.h文件中时,如果没有创建.o文件,如何构建程序 sam
sample1.h
和sample1.cc
文件(以及sample1\u unittest.cc
)构建程序
但是,示例文件夹中的第三个示例只有一个.h
文件--sample3 inl.h
,该文件内联了所有测试代码,即没有.cc文件。基于上面的例子,我试图构建它,就像你在下面看到的那样,但是当我运行make时,它说sample3.o不存在
问题:当所有代码都内联在.h
文件中时,如果没有创建.o
文件,如何构建程序
sample3.o : $(USER_DIR)/sample3-inl.h $(GTEST_HEADERS)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/sample3-inl.h
sample3_unittest.o : $(USER_DIR)/sample3_unittest.cc \
$(USER_DIR)/sample3-inl.h $(GTEST_HEADERS)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/sample3_unittest.cc
sample3_unittest : sample3.o sample3_unittest.o gtest_main.a
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
我应该这样做。如果没有上述更改,代码将在sample3.o
规则中生成sample3 inl.o
或者稍后将输入
.o
文件更改为sample3 inl.o
但有一个sample3\u unittest.cc
。@immibis是的,有一个sample3\u unittest.cc,但没有sample3.cc(即只有一个sample3 inl.h文件),也许问题在于他们正在演示如何对仅标头的库进行单元测试。好的,它可以工作。它是否也会生成一个“sample3inl.h.gch”文件?@Leahcim预编译头文件?看起来很合理。
sample3.o : $(USER_DIR)/sample3-inl.h $(GTEST_HEADERS)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/sample3-inl.h
sample3_unittest.o : $(USER_DIR)/sample3_unittest.cc \
$(USER_DIR)/sample3-inl.h $(GTEST_HEADERS)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/sample3_unittest.cc
sample3_unittest : sample3.o sample3_unittest.o gtest_main.a
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@
sample3.o : $(USER_DIR)/sample3-inl.h $(GTEST_HEADERS)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/sample3-inl.h -o sample3.o