ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Windows용 OpenXLSX 라이브러리 컴파일하기
    프로그래밍/윈도우즈 2021. 3. 20. 16:33
    728x90

    윈도우용 응용 프로그램을 개발하다 보면 결과물을 엑셀 파일로 저장하고 싶을 때가 있습니다. 엑셀 파일을 읽고 쓸 수 있는 몇몇 라이브러리들이 있지만 기능과 성능이 좋으면 상용이거나 오픈 라이선스를 채택하는 라이브러리들은 뭔가 부족하지요. 하지만 Github에 올라와 있는 OpenXLSX는 오픈 라이선스이면서 기능과 성능이 우수합니다.

     

    OpenXLSX은 소스 코드는 공개되어 있지만 컴파일하여 배포는 하지 않음으로 직접 컴파일해야만 합니다. Github의 OpenXLSX 페이지(링크)에서 빌드하는 방법을 설명해주고 있지만 뭔가 빈약해 보여서 정리해 보았습니다.

     

    준비물

    • Microsoft Visual C++ 2019(링크)
    • Git: MSVS 2019에 포함되어 있음
    • CMake: MSVS 2019에 포함되어 있음. 하지만 Windows가 32비트라면 CMake는 따로 설치해주세요.(링크)
    • OpenXLSX 소스 코드

     

    환경 설정

    먼저, Windows 환경변수 PATH에 Git과 CMake의 경로를 등록해 줍니다. (등록이 되어 있다면 넘어갑니다.)

     

    Git과 CMake는 MSVC 2019에 포함되어 있습니다. 하지만, 위에도 서술했다시피 Windows가 x86이라면 CMake는 별도로 설치해주십시오. MSVC 2019에 포함되어 있는 CMake는 x64용이라 실행이 되지 않기 때문입니다.

     

    MSVC 2019에 포함되어 있는 Git과 CMake의 경로는 다음과 같습니다.

    • Git: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git\cmd
    • CMake: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin

     

    소스 코드

    다음은 OpenXLSX 소스 코드를 다운로드(Clone)합니다.

    > git clone https://github.com/troldal/OpenXLSX.git

     

    빌드

    명령 프롬프트(또는 MSYS 등)를 실행하여 소스 코드를 다운로드한 폴더로 이동하고, 다음과 같이 빌드합니다.

    mkdir build
    cd build
    cmake ..
    -- Building for: Visual Studio 16 2019
    -- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.19042.
    -- The CXX compiler identification is MSVC 19.28.29913.0
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.28.29910/bin/Hostx64/x64/cl.exe - skipped
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Performing Test CHARCONV_RESULT
    -- Performing Test CHARCONV_RESULT - Success
    -- Performing Test COMPILER_HAS_DEPRECATED_ATTR
    -- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Failed
    -- Performing Test COMPILER_HAS_DEPRECATED
    -- Performing Test COMPILER_HAS_DEPRECATED - Success
    -- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
    Doxygen need to be installed to generate the doxygen documentation
    -- Catch2 header file not found. Downloading...
    -- Found Git: C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/Common7/IDE/CommonExtensions/Microsoft/TeamFoundation/Team Explorer/Git/cmd/git.exe (found version "2.29.2.windows.4")
    -- git Version: v1.5.2-cc9abfc8
    -- Version: 1.5.2
    -- Performing Test HAVE_STD_REGEX
    -- Performing Test HAVE_STD_REGEX
    -- Performing Test HAVE_STD_REGEX -- success
    -- Performing Test HAVE_GNU_POSIX_REGEX
    -- Performing Test HAVE_GNU_POSIX_REGEX
    -- Performing Test HAVE_GNU_POSIX_REGEX -- failed to compile
    -- Performing Test HAVE_POSIX_REGEX
    -- Performing Test HAVE_POSIX_REGEX
    -- Performing Test HAVE_POSIX_REGEX -- failed to compile
    -- Performing Test HAVE_STEADY_CLOCK
    -- Performing Test HAVE_STEADY_CLOCK
    -- Performing Test HAVE_STEADY_CLOCK -- success
    -- Looking for C++ include pthread.h
    -- Looking for C++ include pthread.h - not found
    -- Found Threads: TRUE
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/Users/kyudoc/source/repos/3rdparty/OpenXLSX/build

     

    여기까지가 OpenXLSL 라이브러리를 빌드하기 위한 작업이었습니다.

    위 작업이 완료되면, build 폴더에 MSVC용 프로젝트 파일들과 솔루션 파일이 생성되어 있을 것입니다. OpenXLSX.sln 파일을 열어 OpenXLSL-shared 또는 OpenXLSL-static 라이브러리를 컴파일 해줍니다.

     

    사용하기

    이제 컴파일된 라이브러리를 사용하는 방법을 간단히 서술 하겠습니다.

     

    build에 생성된 프로젝트 중에 INSTALL이라는 프로젝트가 있어서 컴파일 하면 헤더, 라이브러리 등을 설치해주게되어 있는데, 저는 에러가 나서 라이브러리만 컴파일 하고 설치하지 않고 그대로 사용하겠습니다.

     

    여러분의 프로젝트 환경 설정에서 다음의 항목을 추가해 줍니다.

    • C/C++ > General > Additional Include Directory: OpenXLSX\library;OpenXLSX\build\library
    • Linker > General > Additional Library Directory: OpenXLSX\build\output
    • Linker > Input > Additional Dependencies: Release\OpenXLSX-shared.lib (Debug/Release, static/shared는 알맞게 선택하십시오.)

     

    그리고 중요한 것이 하나 있는데 OpenXLSX은 C++ 17을 사용하였으므로 'C/C++ > Language > C++ Language Standard'를 'ISO C++17 Standard (/std:c++17)'로 변경합니다. 만약 Default 설정을 사용하신다면 다음과 같은 에러를 보시게 될 수 있습니다.

    The contents of <variant> are available only with C++17 or later.

     

    이상 마치겠습니다.

    728x90

    댓글

Designed by Tistory.