Programming/C++

Visual Studio에서 Nana GUI library 사용하기

임아톰 2023. 3. 14. 15:41

Nana는 크로스 플랫폼 C++ GUI 라이브러리입니다. 오픈소스이며 윈도우, 리눅스 그리고 맥OS 환경에서 지원합니다. 

이 글에서는 Visual Studio 2019에서 Nana GUI library 사용하는 법을 소개합니다.

 

Nana C++ Library - a modern C++ GUI library (nanapro.org)

 

Nana C++ Library - a modern C++ GUI library

Thank you for downloading Nana C++ Library Your download should start automatically. If it doesn’t, please click Download historical version, please click here. Help shape the future of Nana C++ Library Goals $5 per month Buy me a coffee, a venti mocha f

nanapro.org

 

위 링크로 들어가면 홈 화면에서 다운로드 버튼을 누릅니다. 

Download Now를 누르면 Nana 라이브러리 압축 파일을 다운받을 수 있습니다.

 

원하는 위치로 옮긴 후 압축을 풉니다.

 

Nana library를 설치하는 방법은 MS Visual Studio · qPCR4vir/nana-docs Wiki (github.com)에 나와있습니다.

요약하면 1. nana C++ library를 컴파일 하고 2. 경로 설정하고 3. nana library를 사용하면 됩니다.

 

1. nana C++ library 컴파일

이번 단계에서는 nana 프로젝트를 빌드하여 nana library를 생성합니다. 

 

압축을 푼 파일의 nana_1.7.4\nana\build\vc2019 경로로 가면 nana.sln (Visual Studio 솔루션 파일)이 있습니다. 이를 더블 클릭하여 프로젝트를 켭니다.

 

프로젝트를 빌드하기 전에 빌드 관련 몇가지 설정을 합니다.

1) 프로젝트 - 속성 - 일반 - C++ 언어 표준 C++17로 변경

  • nana library는 C++17 표준으로 작성되어 설정을 위와 같이 바꿔야 합니다.

 

2) 프로젝트 - 속성 - C/C++ - 코드 생성 - 런타임 라이브러리 다중 스레드 디버그 DLL(/MDd)로 바꾸기

 

이제 빌드를 하면 된다. 솔루션 빌드를 통해 빌드를 진행합니다.

 

빌드가 끝나고 나면 nana_1.7.4\nana\build\bin 경로에 .lib 파일이 생성됩니다.

 

2. 경로 설정

이제 nana library 생성은 완료됐습니다. 이제 nana library를 사용하고 싶은 프로젝트에 경로 설정을 하면 됩니다.

 

이 글에서는 빈프로젝트를 생성하여 nana library를 사용해보겠습니다. 새 프로젝트 만들기 - 빈 프로젝트로 새로운 프로젝트를 만듭니다. 소스파일에 main.cpp을 만들고 아래의 소스 코드를 붙여 넣으면 됩니다. 

//Include nana/gui.hpp header file to enable Nana C++ Library
//for the program.
#include <nana/gui.hpp>

//Include a label widget, we will use it in this example.
#include <nana/gui/widgets/label.hpp>

int main()
{
    //All names of Nana is in the namespace nana;
    using namespace nana;

    //Define a form object, class form will create a window
    //when a form instance is created.
    //The new window default visibility is false.
    form fm;

    //Define a label on the fm(form) with a specified area,
    //and set the caption.
    label lb{ fm, rectangle{ 10, 10, 100, 100 } };
    lb.caption("Hello, world!");

    //Expose the form.
    fm.show();

    //Pass the control of the application to Nana's event
    //service. It blocks the execution for dispatching user
    //input until the form is closed.
    exec();
}

경로 설정 시에는 헤더파일을 포함해줘야 하고 라이브러리를 포함시키고 라이브러리 경로를 추가해줘야 합니다.

 

경로 설정을 하기 전에 프로젝트가 Debug, X64 등의 설정을 확인합니다.

nana library를 빌드한 것에 맞게 프로젝트가 설정되어 있어야합니다. 해당 예시에서는 Debug, X64로 빌드했으므로 새 프로젝트의 설정도 동일하게 하였습니다. nana_1.7.4\nana\build\bin의 .lib 파일의 파일명을 통해 어떤 환경에서 빌드했는지 확인할 수 있습니다. 

 

0) 프로젝트 - 속성 - 일반 - C++ 언어 표준 C++17로 변경

  • nana library는 C++17 표준으로 작성되어 설정을 위와 같이 바꿔야 합니다.

마찬가지로 C++17로 설정해줘야 합니다.

 

 

1) 헤더파일 포함

프로젝트 - 속성 - VC++ 디렉터리 - 포함 디렉터리- 편집 - 새폴더 버튼 - ... 버튼 -

 

nana_1.7.4\nana\include를 포함 디렉터리에 추가해줍니다.

 

2) 라이브러리 경로 추가

프로젝트 속성- VC++ 디렉터리 - 라이브러리 디렉터리 - 라이브러리가 있는 폴더 추가

라이브러리 디렉터리에 위에서 컴파일한 nana library의 위치를 추가시켜줍니다. 빌드한 nana library는 nana_1.7.4\nana\build\bin 경로에 위치합니다.

 

 

3) 프로젝트 - 속성 - 링커 - 입력 - 추가 종속성 - 라이브러리 넣어주기

nana_1.7.4\nana\build\bin 경로에 생성된 라이브러리 파일명을 입력하면 됩니다.

3. nana library 사용

준비는 끝났습니다. 해당 프로젝트를 빌드하여 실행시킵니다.

다음과 같이 윈도우 창이 잘 뜨면 빌드가 잘 된것입니다.

라이브러리 사용 관련 내용은 Reference Manual - Nana C++ Library (nanapro.org)에서 확인할 수 있습니다.

반응형