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.h
和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 $@
并告诉我们结果。
【讨论】:
以上是关于NetBeans 在 make 文件中设置多个 .o 库输出?的主要内容,如果未能解决你的问题,请参考以下文章