0

一般来说,我是制作文件和 Linux 编程的新手,并且在设置 Netbeans 项目/制作文件来做我想做的事情时遇到了一些麻烦。我的项目由一堆库组成,这些库被分成几组,然后一起归档。

进一步说明,基本上每个 .cpp 文件都是一个单独的库,需要编译成 .o 文件,然后每个组中的所有 .o 文件都需要归档到 .a 文件中。在命令行上,我会按照以下方式做一些事情:

for i in *.cpp; do g++ -I./ -c $i -o $i.o ; done

然后:

ar -r "libWhatever.a" *.o

我需要帮助的是设置 make 文件以将库 .o 文件输出到正确的组文件夹中,并摆脱它正在制作的所有额外文件夹。我还希望它能够自动将库组归档在一起。

我的项目是这样设置的:

project -> source - > library_group -> cpp files + sub-folders containing cpp files that are part of the library group.

project -> header -> library_group -> h files + sub-folders containing h files that are part of the library group.

然后,在 NetBeans 中,我在“源文件”+“头文件”属性下设置“包含目录”以包含所有必要的文件和文件夹。

该项目现在可以顺利编译,但输出如下:

build -> Debug -> GNU-Linux-x86 -> Project -> library_group -> libraries + sub-folders containing more libraries.

我想要的是输出看起来像这样:

build -> Debug -> library_group (this folder should contain all .o files associated with the library group)

关于如何配置make文件来做我想做的任何想法?

4

1 回答 1

0

这可能需要多次迭代;我不得不猜测很多。

首先,让我们尝试构建单个目标文件。如果您的源文件之一是foo/bar.cpp,并且它包含baz.hand quartz/quince.h,请尝试以下规则:

build/Debug/library_group/bar.o : project/source/library_group/foo/bar.cpp
    g++ -Iproject/source/library_group -Iproject/source/library_group/quartz -c $< -o $@

并告诉我们结果。

于 2013-06-11T21:53:54.057 回答