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

Posted

技术标签:

【中文标题】NetBeans 在 make 文件中设置多个 .o 库输出?【英文标题】:NetBeans setting up multiple .o library outputs in a make file? 【发布时间】:2013-06-11 18:12:31 【问题描述】:

一般来说,我是制作文件和 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文件来做我想做的事有什么想法吗?

【问题讨论】:

您希望 makefile 驻留在哪里,以及您希望在哪里运行它? make文件存在于项目文件夹IE之上一层:project_name(make文件和git信息)->project 【参考方案1】:

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

首先,让我们尝试构建一个单独的目标文件。如果您的源文件之一是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 $@

并告诉我们结果。

【讨论】:

以上是关于NetBeans 在 make 文件中设置多个 .o 库输出?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 webpack 在项目中设置多个文件输入和输出?

如何在一个文件中设置多个虚拟主机

如何在 chrome 扩展 manifest.json 文件中设置多个内容安全策略

如何在多个文件中设置mocha测试用例的执行顺序

如何在 Laravel 中设置默认控制器?

使用角度服务在多个组件中设置超时