2

Qt 4.6.1

次の .pro ファイルで、ステートメントを使用すると

sources = ef.cpp

次のエラーが表示されます。

RInside.h: No such file or directory

ここに画像の説明を入力

次に、 = を := に置き換えると、次のようになります。

sources := ef.cpp

上記のエラーが消え、新しいエラーが発生します。

error: undefined reference to qMain(int, char**)

ここに画像の説明を入力

ここから: https://stackoverflow.com/a/448939/462608

VARIABLE = value 変数の通常の設定 - その中の値は、変数が宣言されたときではなく、変数が使用されたときに再帰的に展開されます

VARIABLE := value 内部の値を単純に展開する変数の設定 - その中の値は宣言時に展開されます。

ここで何が起こっているのか、そして解決策は何かを理解したいと思います。

.cpp

#include <RInside.h>
int main(int argc, char *argv[]) 
{
    RInside R(argc, argv);

    R["txt"] = "Hello, world!\n";

    R.parseEvalQ ("cat(txt)");

    exit(0);
}

。プロ

TEMPLATE    = app
TARGET      = 
DEPENDPATH  += .
INCLUDEPATH += .

R_HOME  := 'c:/R-2.15.1'

# Input
sources  = ef.cpp
programs := $(sources:.cpp=)

## include headers and libraries for R
RCPPFLAGS :=        $(shell $(R_HOME)/bin/R $(R_ARCH) CMD config --cppflags)
RLDFLAGS  :=        $(shell $(R_HOME)/bin/R $(R_ARCH) CMD config --ldflags)
RBLAS     :=        $(shell $(R_HOME)/bin/R $(R_ARCH) CMD config BLAS_LIBS)
RLAPACK   :=        $(shell $(R_HOME)/bin/R $(R_ARCH) CMD config LAPACK_LIBS)

## include headers and libraries for Rcpp interface classes
RCPPINCL  :=        $(shell echo 'Rcpp:::CxxFlags()' | $(R_HOME)/bin/R $(R_ARCH) --vanilla 

--slave)
RCPPLIBS  :=        $(shell echo 'Rcpp:::LdFlags()'  | $(R_HOME)/bin/R $(R_ARCH) --vanilla --slave)


## include headers and libraries for RInside embedding classes
RINSIDEINCL :=      $(shell echo 'RInside:::CxxFlags()' | $(R_HOME)/bin/R $(R_ARCH) --vanilla --slave)
RINSIDELIBS :=      $(shell echo 'RInside:::LdFlags()'  | $(R_HOME)/bin/R $(R_ARCH) --vanilla --slave)


## compiler etc settings used in default make rules
CXX        := $(shell $(R_HOME)/bin/R $(R_ARCH) CMD config CXX)
CPPFLAGS   := -Wall $(shell $(R_HOME)/bin/R $(R_ARCH) CMD config CPPFLAGS)
#CXXFLAGS  := $(RCPPFLAGS) $(RCPPINCL) $(RINSIDEINCL) $(shell $(R_HOME)/bin/R $(R_ARCH) 

CMD config CXXFLAGS)
QMAKE_CXXFLAGS := $(RCPPFLAGS) $(RCPPINCL) $(RINSIDEINCL) $(shell $(R_HOME)/bin/R $(R_ARCH) CMD config CXXFLAGS)
LDFLAGS    = -s
QMAKE_LIBS := $(RLDFLAGS) $(RBLAS) $(RLAPACK) $(RINSIDELIBS) $(RCPPLIBS)
CC         := $(shell $(R_HOME)/bin/R $(R_ARCH) CMD config CXX)
4

1 に答える 1

5

これはQtプロジェクトのようには見えないので、おそらくQtライブラリに対するリンクを無効にする必要があります。設定QTCONFIGて空にする:

QT =
CONFIG =

一方、これQtライブラリに対してリンクする必要があるQtプロジェクトである場合、問題は、QMAKE_LIBSやなどの重要な変数を上書きしていることですQMAKE_CXXFLAGS+=ではなく、を使用してください:=。また、LIBSではなく、を使用してくださいQMAKE_LIBS

于 2012-11-01T09:28:00.743 に答える