NetBeans在make文件中设置多个.o库输出

NetBeans setting up multiple .o library outputs in a make file?

本文关键字:输出 设置 make 文件 NetBeans      更新时间:2023-10-16

我是新手,一般来说,制作文件和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文件来做我想要的任何想法?

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

首先,让我们尝试构建一个对象文件。如果您的源文件之一是foo/bar.cpp,并且它包括baz.hquartz/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 $@

并告诉我们结果