为了简单起见,我将问题简化为一个最小的工作示例。
我从一个文件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
当然,-std=c++11
这一行仅仅意味着遵循c++11标准,所以对于我的例子来说,这并不是完全必要的。
1条答案
按热度按时间m2xkgtsf1#
fltk-config --compile <file.cc>
是当您有单一档案项目时的方便选项。它会编译并链接您的应用程序。如果你有多个文件,比如说 * main.cc * 和 * account.cc *,你最好的选择是先编译,然后把它们链接在一起。
类似于(请注意,我也请求了图像库):