FLTK -编译多个.cpp- Linux

zd287kbt  于 2022-12-11  发布在  Linux
关注(0)|答案(1)|浏览(152)

为了简单起见,我将问题简化为一个最小的工作示例。
我从一个文件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

当然,-std=c++11这一行仅仅意味着遵循c++11标准,所以对于我的例子来说,这并不是完全必要的。

m2xkgtsf

m2xkgtsf1#

fltk-config --compile <file.cc>是当您有单一档案项目时的方便选项。它会编译并链接您的应用程序。
如果你有多个文件,比如说 * main.cc * 和 * account.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

相关问题