FLTK - 编译多个.cpp的 - Linux

时间:2014-07-20 03:28:07

标签: c++ linux fltk

为了这个问题,我把我的情况简化为一个更直接和简单的问题。

我从文件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.cpphead.hblah2.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标准,因此对我的情况来说并不是完全必要的。

1 个答案:

答案 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