1

我开始编写我的数据处理库,并且对构建项目和库的正确结构感到非常困惑。

说,我想在 myfunclib 库中存储一组函数。我当前的设置(取自多个在线建议)如下所示:

myproj/include/myfunclib.h - 类声明 myproj/include/myfunclib.cpp - 类功能 myproj/src/functest.cpp - 用于检查功能的测试文件

首先,感觉这是一个正确的设置,以防我将 myfunc 仅用于 myproj 项目,但说我想重用它 - 然后我需要在每个使用它的 cpp 文件中指定它的路径或存储多个副本它。

其次,在这种情况下编译有点笨重:

g++ -I include include/myfunclib.cpp src/functest.cpp

每次都输入所有这些东西是正常的做法吗?如果我需要很多自定义库怎么办?有没有办法单独存储它们,只需包含为“myfunclib.h”而不用担心重新编译等?

4

2 回答 2

0

一些原本咬我的东西,

请记住,模板类只应包含在内,通常源实现不应像普通类实现那样构建到目标文件中,所以通常我将整个模板实现放在包含目录中

我将包含和源文件分开,源文件是指需要编译为目标文件以进行链接的代码(定义),包括所有声明、内联函数等,这对我来说似乎更有意义

有时我会有一个头文件,其中包含特定模块的所有相关头文件,反过来可能还有一个更高的头文件,其中包含我正在使用的模块的所有主要头文件

也如评论中所说,您需要向自己介绍一些构建工具,并熟悉它们,这些将帮助您跟踪项目中的依赖关系,并且在大多数情况下,当只有一部分依赖关系发生更改时,避免重新构建整个项目(这在开始时可能会很痛苦,但值得学习,如果您使用 make 和 g++,则有一种方法可以使用 g++ -MM 来实现这一点......不确定它在所有情况下的效果如何),我知道我组织项目的方式发生了巨大变化,我对构建过程的了解越多,我的项目变得越复杂(我必须修复的缺陷也越多)

这就是我通常在开始时保持项目目录结构的方式

build - where all the built files will be stored
app - these are the main apps (can also be split into include/src)
include - includes files
src - src files (compiled into objects and then linked with main compiled app)
lib - any libs (usually 3rdparty libs , if any my src is compiled into a library it usually ends up in build/lib/target/... )

希望有些帮助

于 2013-03-29T02:39:37.117 回答
0

使用 makefile 来处理所有依赖项并构建代码。谷歌语法很简单。然后你可以在命令行上说“make”,它会为你构建一切。

这是一个很好的教程 http://mrbook.org/tutorials/make/

于 2013-03-29T03:50:54.643 回答