6

スクリプト$(CXX)で設定されているC++コンパイラをとして呼び出す単純なmakefileがあります。~/.profileNetbeansには洗練されたツールチェーンマネージャがあるようですが、それでも何があっても解決する$CXXようです。c++

どうすれば$CXX正しく設定できますか、またはmakefileが検出できるNetbeansによって設定された別の変数はありますか?(うん)

編集:ナビゲーターでmakefileを右クリックすると、環境を指定できますが、1行の入力用のスペースしかないようです。指定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-fileは、すべてのNetBeansプロジェクトで同じです。ここには絶対パスがないため、makeはPATH変数を使用してGCCツールセットを検索しますが、もちろん絶対パスを使用して、必要なツールセットを選択できます(または別のincファイルを含めることができます-この方法をお勧めします)。

これはすべて私のWindowsマシンで機能しますが、Linuxの構成は非常によく似ています。すべてのメインのmakefileに別のinc-fileのセットを含める必要があります。また、この設定により、コマンドラインからmakeを呼び出すことができます。

お役に立てば幸いです、〜AY

于 2013-11-07T16:02:02.920 に答える
2

これは古い投稿です。しかし、最近同じ問題を見つけ、@HEKTOの回答に基づいて別の問題を見つけました。

大規模なスパース行列システムを解くためのライブラリであるPETScを使用します。彼らのビルドシステムでは、2つの環境変数に依存するmakefileで「include」を使用する必要があります。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に渡された変数の定義を変更するだけで、他のすべてが解決されます。

これが誰かに役立つことを願っています。それは間違いなく私のために働いた。そして、すばらしい点は、自分のコードを他の人に渡すことができ、他の人が通常どおり(NetBeansなしで)「make」を使用してコマンドラインからコンパイルし、上記の環境変数を定義できることです。現在、コンパイルにはハードコードされたパスがありません。

于 2015-02-24T15:32:30.327 に答える
1

Linuxでも非常によく似た問題が発生し、Netbeansがbashから環境変数を取得しませんでした。

解決策:bashからnetbeansを開始します。

Macで同等のものが何であるかはわかりませんが、考え方は単純です。適切な環境変数がすでに設定されているターミナルからNetbeansを起動します。

于 2016-06-07T10:42:55.347 に答える