FLTK - 编译多个.cpp - Linux

FLTK - Compile Multiple .cpp's - Linux

本文关键字:cpp Linux 编译 FLTK      更新时间:2023-10-16

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

我从一个非常简单的文件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标准,所以对于我的例子来说,这并不是完全必要的。

fltk-config --compile <file.cc>是一个方便的选项,当你有一个单文件项目。它编译并链接你的应用程序。

如果有多个文件,则使用main。Cc 帐户。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