如何编译具有多个源文件的项目
How do I compile a project with multiple source files?
我有一个主代码(.cpp
)和一些其他文件(.cpp
及其相应的.h
文件),其中包含在我的主程序中使用的函数。我想知道如何编译我的文件和运行主代码。
这取决于你的编译器。例如,在GCC中,您可以这样写:
g++ foo.cpp bar.cpp baz.cpp -o foo # compile program
./foo # run program
Basile's right on,您需要构建机器拥有您可以轻松工作的软件。您真的希望能够运行make
或类似的东西,并以可重复的方式快速重建您的项目。您还需要确保您的整个项目保持最新状态,重新构建依赖于已更改内容的所有内容。虽然您可以像ruakh的回答那样保留包含g++
行的shell脚本,但这将不必要地重新编译超出您需要的内容。(这对小项目来说不是什么大事,但当项目变得越来越大时就变得很重要了。)
我只花了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
书在这一点上已经很过时了;.SUFFIX
规则已经被模式规则所取代,但是在O'Reilly的书中没有涉及到模式规则。也就是说,如果完整的GNU Make文档不适合您,它仍然是一个很好的起点。
但真正的答案是使用一些构建机制,例如有一个Makefile并使用GNU Make。
有一些比GNU Make更好的构建器,比如Omake
构建器非常有用,因为在ruakh的例子中,当只有bar.cpp
发生变化时,您可能不想重新编译foo.cpp
,因此您需要考虑依赖关系。
(还有Makefile生成器,如automake
, cmake
…)
- 视觉工作室项目.提取源文件夹名称
- 在 Visual Studio 中的 1 个项目中编译单个 C++ 源文件
- 无法在默认Qt项目中打开源文件"ui_QtGuiApplication.h"
- VS2017中导出的项目模板缺少源文件
- 如何将包含多个.cpp源文件的文件夹导入Eclipse项目中,每个源文件都有一个main()定义
- 检测到来自同一 Visual Studio 2015 项目的源文件的对象文件的'RuntimeLibrary'不匹配
- 如何在C++项目中使用C源文件
- 将源文件复制到Visual Studio项目中
- 包括来自其他项目的源文件的最佳实践
- 导出visual studio c++项目以在另一个项目中使用,而不显示.cpp和.h源文件
- 如何在 IAR 嵌入式 ARM 工作台中编译由 C 和 C++ 源文件组成的项目?
- 当同一项目中涉及多个源文件和头文件时,如何在 Visual Studio 中编译和运行项目
- 我正在使用Xcode进行c ++编程和学习。为什么我不能在一个项目中放置许多具有 MAIN 功能的单独源文件?
- 如何将C++源文件和标头添加到 C# .Net 项目
- 我无法将C++源文件添加到空项目中
- 如何在 Visual 2010 中包括从源文件 (.cpp) 在项目中创建的头文件 (.h)
- 使用 NetBeans 动态库项目中不同目录中的源文件
- 如何在大型项目中预处理具有多个 #include 文件的单个源文件
- 如何在Visual Studio中使用一堆源文件创建C++项目
- 具有公共源文件的一个项目中的多个共享库