为了这个问题,我把我的情况简化为一个更直接和简单的问题。
我从文件blah.cpp
开始,非常简单。
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
int main(int argc, char **argv) {
Fl_Window* win = new Fl_Window(100,100,100,100,"Title");
win->show();
return Fl::run();
}
要编译它,我输入我的终端(在文件目录blah.cpp
中)
fltk-config --compile blah.cpp
哪个效果很好。我只需输入./blah
,屏幕上就会显示100像素的窗口。但是,一旦我想扩展到多个文件,即blah.cpp
,head.h
和blah2.cpp
,我就会出现问题。
/* head.h */
#ifndef HEAD
#define HEAD
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
class My_Window{
public:
My_Window(int,int);
bool open();
~My_Window(){
delete win;
}
private:
Fl_Window* win;
};
#endif
/* blah2.cpp */
#include "head.h"
My_Window::My_Window(int w, int h):{
win = new Fl_Window(w,h);
win->show();
}
bool My_Window::open(){
return Fl::run();
}
/* blah.cpp */
#include "head.h"
int main() {
Window win(300,300);
return win.open();
}
我的问题是,如何用终端编译这个项目(blah.cpp和blah2.cpp)?我最初的猜测是将所有内容放在同一目录中并执行类似
的操作fltk-config --compile *.cpp
或
fltk-config --compile "*.cpp"
但这两项工作都没有。我该怎么做呢?
[溶液]
在我输入完成后我最终解决了这个问题,但我在互联网上已经看过很多次了,所以也许这会帮助别人。
我取消了fltk-config
命令,并坚持使用常规g++
:
g++ -std=c++11 blah.cpp blah2.cpp -o blah -lfltk
随着它的工作!然后使用标题blah
创建程序的可执行文件!当然,-std=c++11
行只意味着遵循c ++ 11标准,因此对我的情况来说并不是完全必要的。
答案 0 :(得分:1)
fltk-config --compile <file.cc>
将成为一个便利选项。它编译并链接您的应用程序。
如果您有多个文件,例如 main.cc 和 account.cpp ,您最好的选择是首先进行编译,然后将它们全部链接在一起。
类似的东西(注意我也要求图像库):
g++ `fltk-config --cxxflags` main.cc
g++ `fltk-config --cxxflags` account.cc
gcc -o myapp `fltk-config --use-images --ldflags` main.o account.o