В NetBeans переменные среды для C++ файл Makefile

у меня есть простой makefile, который вызывает компилятор C++ как $(CXX), который установлен в my ~/.profile сценарий. Netbeans, похоже, имеет сложный менеджер цепочек инструментов, но, похоже, решает $CXX Как только c++ несмотря ни на что.

как я могу установить $CXX правильно, или есть другая переменная, установленная Netbeans, которую может обнаружить мой makefile? (фу)

Edit: щелчок правой кнопкой мыши по makefile в навигаторе позволяет мне указать среду, хотя кажется, что место только для одной строки ввода. Указание CXX=/usr/local/bin/g++ устраняет проблему, но это далеко не оптимально.

3 ответов


Я просто опишу, что я обычно делаю, когда работаю с C++ в NetBeans. Сначала для каждого проекта Я создаю простой файл 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 из командной строки.

надеюсь, это поможет, ~АУ


Это старый пост. Однако недавно я нашел ту же проблему, и я нашел альтернативу, основанную на ответе @HEKTO.

Я использую PETSc, библиотеку для решения больших разреженных матричных систем. Их система сборки требует, чтобы вы использовали "include" в вашем makefile, который зависит от двух переменных среды: PETSC_DIR и PETSC_ARCH, которые должны быть установлены в вашей среде.... или вы можете передать их в качестве параметров для вашей команды!! вот что я сделал.

Я взял файл makefile генерируется NetBeans, и в самом конце я добавил свой include:

include ${PETSC_DIR}/conf/variables

обратите внимание, как это зависит от определения PETSC_DIR. Кроме этого включать массово использует это и PETSC_ARCH повсюду.

Итак, в NetBeans теперь я настраиваю его для передачи этих переменных, чтобы сделать: Tools - >Options: на вкладке " Параметры проекта "я заполняю текстовое поле для" Make Options " следующим образом: PETSC_DIR=/path/to/petsc PETSC_ARCH=some-arch

кроме того, теперь вы можете начать использовать эти переменные среды (и другие, определенные в ${PETSC_DIR}/conf/variables в параметрах проекта. Например, для моих файлов включения я делаю (щелкните правой кнопкой мыши на проекте, затем " Свойства"): В разделе "компилятор C", "включить каталоги" я ставлю: ${PETSC_DIR}/include

и в разделе "Компоновщик", "библиотеки" я ставлю: ${PETSC_LIB} (определенный в файле include выше).

теперь я могу создавать и запускать свой проект из NetBeans. Если моя версия PETSc изменяется, мне нужно только изменить определение переменных, переданных для создания, и все остальное решается.

Я надеюсь, что это может помочь кому-то. Это определенно сработало для меня. И хорошая часть заключается в том, что я могу дать свой код другим людям, и они могут компилироваться из командной строки, используя "make" как обычно (без NetBeans) и определяя вышеуказанные переменные среды. Сборник теперь не имеет жестко закодированные пути.


У меня была очень похожая проблема в linux, где Netbeans не захватили переменные среды из bash.

решение: запустите netbeans из bash.

Я не уверен, что эквивалент на Mac, но идея проста: запустите Netbeans с терминала, у которого уже установлены правильные переменные среды.