为了简单起见,我将我的问题简化为一个最小的工作示例。
我从一个非常简单的文件 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标准,对于我的情况来说并不完全必要。