FLTK - 在Linux上编译多个.cpp文件

3

为了简单起见,我将我的问题简化为一个最小的工作示例。

我从一个非常简单的文件 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个回答

2

fltk-config --compile <file.cc> 是为单文件项目提供的方便选项。它会编译并链接您的应用程序。

如果您有多个文件,比如 main.ccaccount.cc,最好的选择是先进行编译,然后将它们全部链接起来。

类似以下命令(请注意,我也请求了图像库):

g++ `fltk-config --cxxflags` main.cc
g++ `fltk-config --cxxflags` account.cc
gcc -o myapp `fltk-config --use-images --ldflags` main.o account.o

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接