结合两个GCC命令/从一个Makefile中生成一个(QT和GCC插件)

时间:2012-07-05 12:20:14

标签: c++ qt gcc makefile

我写了一个非常好用的GCC插件。我创建了一个Makefile,它执行以下命令来创建插件:

$ g++ -I$(INCLUDE_PATHS) -fPIC -shared $(SOURCE_PATHS) -o Plugin.so

我使用以下命令执行插件:

$ g++ -S -fplugin=./Plugin.so /TestProgramm.cpp

这非常有效。现在我想在调用插件时显示QT GUI。我在Eclipse中编写了GUI,因此我得到了一个自动生成的MakeFile。执行GUI时,Eclipse执行以下命令:

g++ -c -pipe -g -Wall -W -D_REENTRANT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I$(QT_INCLUDE_PATHS) -o debug/GUI.o GUI.cpp

g++ -Wl,-rpath,/opt/QtSDK/Desktop/Qt/4.8.1/gcc/lib -o GraphGUI debug/GUI.o debug/main.o debug/GraphGUI.o debug/moc_GraphGUI.o -L/opt/QtSDK/Desktop/Qt/4.8.1/gcc/lib -lQtGui -L/opt/QtSDK/Desktop/Qt/4.8.1/gcc/lib -L/usr/X11R6/lib -lQtCore -lpthread

GraphGUI和GUI是我写的GUI的类。

现在我想在我自己的Makefile中组合这些语句,以便编译器编译我的插件和我的GUI。几天前我开始使用Makefiles,所以我只掌握了Makefiles的基础知识。希望有人可以帮助我。

这是我的Makefile:

GCC := g++
FILENAME := Explorer.so

GCC_INCLUDE := -I/usr/lib/gcc/i686-linux-gnu/4.6/plugin/include
QT_INCLUDE := -I/opt/QtSDK/Desktop/Qt/4.8.1/gcc/mkspecs/default \
              -I/opt/QtSDK/Desktop/Qt/4.8.1/gcc/include/QtCore \
              -I/opt/QtSDK/Desktop/Qt/4.8.1/gcc/include/QtGui \
              -I/opt/QtSDK/Desktop/Qt/4.8.1/gcc/include 

SOURCE_FILES = ## Some .cpp files for the plugin ##


$(FILENAME): 

    @$(GCC) $(GCC_INCLUDE) -fPIC -shared $(SOURCE_FILES) -o $@ $^

clean:
    @rm $(FILENAME)

我尝试创建GUI的目标文件,然后将它们包含在创建插件的命令中;像这样:

    $(GCC) -c -pipe -g -Wall -W -D_REENTRANT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED $(QT_INCLUDE) -Idebug -I. -o debug/GUI.o src/Visualize/GUI.cpp

    $(GCC) -c -pipe -g -Wall -W -D_REENTRANT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED $(QT_INCLUDE) -Idebug -I. -o debug/GraphGUI.o src/Visualize/GraphGUI.cpp

    # /opt/QtSDK/Desktop/Qt/4.8.1/gcc/bin/moc -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED $(QT_INCLUDE) -Idebug -I. src/Visualize/GraphGUI.h -o debug/moc_GraphGUI.cpp

    # $(GCC) -c -pipe -g -Wall -W -D_REENTRANT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED $(QT_INCLUDE) -Idebug -I. -o debug/moc_GraphGUI.o debug/moc_GraphGUI.cpp

    $(GCC) $(PLUGIN_INCLUDE) -fPIC -shared $(SOURCE_FILES) debug/GraphGUI.o debug/GUI.o -o $@ $^

如果我像这样执行它,我得到未定义的符号:_ZN11QMainWindowC2EP7QWidget6QFlagsIN2Qt10WindowTypeEE错误。如果我也执行以“#”开头的两个命令,我会得到“未定义的对main的引用”。我刚从eclipse复制了这些命令;我实际上并不知道他们在做什么。

0 个答案:

没有答案