6

我有一个简单的 makefile,它调用 C++ 编译器 as $(CXX),这是在我的~/.profile脚本中设置的。Netbeans 似乎有一个复杂的工具链管理器,但它似乎无论如何都能$CXX解决c++

如何$CXX正确设置,或者我的 makefile 是否可以检测到 Netbeans 设置的另一个变量?(恶心)

编辑:在导航器中右键单击生成文件允许我指定一个环境,尽管似乎只有一行输入的空间。指定CXX=/usr/local/bin/g++可以解决问题,但这远非最佳。

4

3 回答 3

3

我将只描述我在 NetBeans 中使用 C++ 时通常会做什么。首先,我为每个项目创建一个简单的 makefile,如下所示:

MAIN = <my main target>
CFLAGS = -g -std=c++0x

include ${MAKELIBHOME}/MINGW32.inc
include ${MAKELIBHOME}/WINDOWS.inc

build: ${MAIN}

clean:; rm -fr <files to remove>

环境变量 MAKELIBHOME 在 NetBeans 之外设置。目录 ${MAKELIBHOME} 包含许多 make 的包含文件,例如文件 MINGW32.inc 如下所示:

CC = g++

CFLAGS += -W -DLITTLE_ENDIAN=1
LDLIBS += -lws2_32

.SUFFIXES: .o .c .cpp

.c:     ;${CC} ${CFLAGS} ${LDFLAGS} $< -o latest ${LDLIBS}
.cpp:   ;${CC} ${CFLAGS} ${LDFLAGS} $< -o latest ${LDLIBS}

.c.o:   ;${CC} ${CFLAGS} -c $<
.cpp.o: ;${CC} ${CFLAGS} -c $<

这些 inc 文件对于所有 NetBeans 项目都是相同的。这里没有绝对路径,因此 make 将使用 PATH 变量来定位 GCC 工具集,但当然您可以使用绝对路径来选择您喜欢的工具集(或包含不同的 inc 文件 - 我更喜欢这种方式)。

所有这些都适用于我的 Windows 机器,但 Linux 配置看起来非常相似——我只需要将另一组 inc 文件包含到我的所有主要 makefile 中。此外,此设置允许我从命令行调用 make。

希望对你有帮助~AY

于 2013-11-07T16:02:02.920 回答
2

这是一个旧帖子。但是我最近发现了同样的问题,并且我根据@HEKTO 的回答找到了一个替代方案。

我使用 PETSc,一个解决大型稀疏矩阵系统的库。他们的构建系统要求您在 makefile 中使用“包含”,这取决于两个环境变量:PETSC_DIR 和 PETSC_ARCH 必须在您的环境中设置......或者您可以将它们作为选项传递给您的 make 命令!这就是我所做的。

我使用了 NetBeans 生成的 makefile,最后我添加了我的包含:

include ${PETSC_DIR}/conf/variables

请注意这如何取决于 PETSC_DIR 的定义。此外,这包括大量使用这个和 PETSC_ARCH。

因此,现在在 NetBeans 中,我将其配置为传递这些变量来生成: 工具->选项:在“项目选项”选项卡中,我将“生成选项”的文本框填充为:PETSC_DIR=/path/to/petsc PETSC_ARCH=一些拱形

此外,现在您可以开始使用这些环境变量(以及在项目选项中的 ${PETSC_DIR}/conf/variables 中定义的其他变量。例如,对于我的包含文件(右键单击项目,然后单击“属性”): “C 编译器”、“包含目录”我输入:${PETSC_DIR}/include

在“链接器”、“库”下,我输入:${PETSC_LIB}(在上面的包含文件中定义)。

现在我可以在 NetBeans 中构建和运行我的项目了。如果我的 PETSc 版本发生变化,我只需要更改传递给 make 的变量的定义,其他一切都会得到解决。

我希望这可能对某人有所帮助。它肯定对我有用。好的部分是我可以将我的代码提供给其他人,他们可以像往常一样使用“make”从命令行编译(没有 NetBeans)并定义上述环境变量。编译现在没有任何硬编码路径。

于 2015-02-24T15:32:30.327 回答
1

我在 linux 上遇到了一个非常相似的问题,Netbeans 没有从 bash 中获取环境变量。

解决方案:从 bash 启动 netbeans。

我不确定 Mac 上的等价物是什么,但想法很简单:从已设置正确环境变量的终端启动 Netbeans。

于 2016-06-07T10:42:55.347 回答