2014-07-20 4 views
1

이 질문을 위해 필자는 상황을 좀 더 직접적으로 간단하게 줄였습니다.FLTK - 여러 개의 .cpp 컴파일 - Linux

파일이 매우 간단합니다 (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.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

fltk-config --compile <file.cc>은 단일 파일 프로젝트가있는 경우 편리한 옵션이됩니다. 응용 프로그램을 컴파일하고 링크합니다.

여러 개의 파일이있는 경우

main.ccaccount.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 
관련 문제