我有一个主代码(.cpp)和一些其他文件(.cpp及其对应的.h文件),其中包含我的主程序中使用的函数。我想知道如何编译我的文件并运行主代码。如何编译包含多个源文件的项目?
2
A
回答
5
这取决于你的编译器。例如,使用GCC,你可能会写:
g++ foo.cpp bar.cpp baz.cpp -o foo # compile program
./foo # run program
1
3
Basile's right on, you need build machinery有软件,你可以很容易地努力。你真的希望能够运行make
或类似的东西,并以可重复的方式快速重建项目。您还希望确保您的整个项目保持最新状态,重建所有依赖于已发生变化的事情。虽然你可以只保留一个包含g++
行的shell脚本,如ruakh's answer,但这将会不必要地重新编译超过你的需要。 (这对小项目来说并不是什么大事,但当项目变得比平凡更重要时就变得很重要。)
我只花了15分钟浏览了OMake文档,但它看起来很有希望。 make
在系统上是标准的,并且提供了大量预定义的构建规则,包括C++规则,所以编写项目新的Makefile
并不是很困难。
它会是这个样子:
# the compiler and its flags
CXX = g++
CXXFLAGS = -Wall
PROGRAM = foo
OBJECTS = foo_a.o foo_b.o foo_c.o foo_d.o
.PHONY: all
.DEFAULT: all
all: $(PROGRAM)
$(PROGRAM): $(OBJECTS)
的对象foo_a.o
将从名为foo_a.c
,foo_a.cc
,foo_a.C
,foo_a.cpp
,foo_a.p
,foo_a.f
,foo_a.F
相应的源文件,等建成,对于C ,C++,Fortran,Pascal,Lex,Yacc等。
O'Reilly make
book此时此刻已经过时了, .SUFFIX
规则已被pattern rules代替,但O'Reilly书中没有涵盖模式规则。也就是说,如果整个GNU Make documentation不适合你,它仍然是一个很好的起点。
相关问题
- 1. cmake:如何在项目目录中包含/编译文件?
- 2. 编译一个包含多个目录的文件列表
- 3. 如何编译包含C源文件的C++源代码?
- 4. 如何在一个项目中包含一个项目的源文件?
- 5. 如何在包中编译并运行包含多个类的项目?
- 6. 编译多个源文件
- 7. 如何使用Makefiles编译包含多个目录的C++项目?
- 8. 用多个文件编译项目
- 9. 无法执行Findbugs导致:该项目包含未编译的Java源文件
- 10. 编译包含cpp和c文件的项目
- 11. 如何反编译CHM文件,包括项目文件
- 12. 将Zxing库编译为.a文件并包含在项目中
- 13. 编译一个包含多个文件的程序
- 14. 如何用ocamlbuild编译jocaml文件并包含一个包?
- 15. 如何在使用Apache Ant编译的项目中包含ActionBar
- 16. 如何在anjuta项目中包含资源文件
- 17. 如何在一个主项目中包含多个Xcode项目
- 18. 已编译的Jar文件包含多余的类文件
- 19. Ant:如何编译包含源附件的jar
- 20. 编译XCode中的多个目标时,如何确保某些文件不会包含在一个目标中
- 21. 在c编译多个源文件
- 22. 包括包含.jar文件编译
- 23. 可以编译多个源文件夹到多个目标文件夹
- 24. 如何在父项目中包含子项目的资源?
- 25. 如何编译和运行多个包或源文件的Java代码
- 26. Sharepoint编译项目包含两个相互引用的类库
- 27. 如何读取项目文件.csproj以仅编译项目中包含的那些.cs
- 28. 在Codelite上编译项目(C++)重新编译太多文件
- 29. 编译单个文件在NetBeans项目
- 30. 将多个C源文件编译成一个唯一的目标文件
我提到-Wall&-g这是非常有用的。 – 2011-12-15 01:10:22
非常感谢,这正是我想要的。 – Sohrab 2011-12-15 03:27:44