【发布时间】:2014-09-10 21:26:39
【问题描述】:
为了这个问题,我把我的情况简化为一个更直接和简单的情况。
我从一个文件开始,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 标准,因此对于我的情况来说这不是完全必要的。
【问题讨论】: