https://github.com/tfussell/xlnt
Windows
> cd vcpkg
> ./vcpkg install xlnt:x64-windows
Linux
$ git clone https://github.com/microsoft/vcpkg.git
$ cd vcpkg
$ ./bootstrap-vcpkg.sh
$ sudo ./vcpkg integrate install
$ ./vcpkg install xlnt
...
-- Configuring x64-linux
-- Building x64-linux-dbg
-- Building x64-linux-rel
-- Installing: /home/jym/dev/vcpkg/packages/xlnt_x64-linux/share/xlnt/copyright
-- Fixing pkgconfig file: /home/jym/dev/vcpkg/packages/xlnt_x64-linux/lib/pkgconfig/xlnt.pc
-- Fixing pkgconfig file: /home/jym/dev/vcpkg/packages/xlnt_x64-linux/debug/lib/pkgconfig/xlnt.pc
...
xlnt provides CMake targets:
# this is heuristically generated, and may not be correct
find_package(Xlnt CONFIG REQUIRED)
target_link_libraries(main PRIVATE xlnt::xlnt)
Specify the toolchain as a CMake option:
-DCMAKE_TOOLCHAIN_FILE=/home/jym/dev/vcpkg/scripts/buildsystems/vcpkg.cmake
But this won't work if you already specify a toolchain, such as when cross-compiling.
To avoid this problem, include it.
include(/home/jym/dev/vcpkg/scripts/buildsystems/vcpkg.cmake)
Example: CMakeLists.txt
cmake_minimum_required(VERSION 3.16)
project(test-xlnt CXX)
set(CMAKE_VERBOSE_MAKEFILE true)
set(CMAKE_CXX_STANDARD 14)
include(/home/jym/dev/vcpkg/scripts/buildsystems/vcpkg.cmake)
list(APPEND CMAKE_PREFIX_PATH "/home/jym/dev/vcpkg/installed/x64-linux/share")
find_package(Xlnt CONFIG REQUIRED)
message("XLNT_CMAKE_DIR: ${XLNT_CMAKE_DIR}")
message("xlnt_INCLUDE_DIR: ${xlnt_INCLUDE_DIR}")
set(SRC_FILES main.cpp)
add_executable(${PROJECT_NAME} ${SRC_FILES})
target_include_directories(${PROJECT_NAME} PRIVATE
${xlnt_INCLUDE_DIR})
target_link_libraries(${PROJECT_NAME} PRIVATE
xlnt::xlnt)
다른 방법:
Findxlnt.cmake
# Findxlnt.cmake
#
# Finds the xlnt library
#
# This will define the following variables
#
# xlnt_FOUND
# xlnt_LIBRARY
# xlnt_LIBRARIES
# xlnt_LIBRARY_DEBUG
# xlnt_LIBRARY_RELEASE
#
# and the following imported targets
#
# xlnt::xlnt
#
# Author: John Coffey - johnco3@gmail.com
#
find_path(xlnt_INCLUDE_DIR NAMES xlnt/xlnt.hpp)
if (NOT xlnt_LIBRARIES)
find_library(xlnt_LIBRARY_RELEASE NAMES xlnt DOC "xlnt release library")
find_library(xlnt_LIBRARY_DEBUG NAMES xlntd DOC "xlnt debug library")
include(SelectLibraryConfigurations)
select_library_configurations(xlnt)
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(xlnt
REQUIRED_VARS xlnt_INCLUDE_DIR xlnt_LIBRARY)
mark_as_advanced(
xlnt_INCLUDE_DIR
xlnt_LIBRARY)
if(xlnt_FOUND AND NOT (TARGET xlnt::xlnt))
# debug output showing the located libraries
message(STATUS "xlnt_INCLUDE_DIR=${xlnt_INCLUDE_DIR}")
message(STATUS "xlnt_LIBRARY=${xlnt_LIBRARY}")
message(STATUS "xlnt_LIBRARIES=${xlnt_LIBRARIES}")
message(STATUS "xlnt_LIBRARY_DEBUG=${xlnt_LIBRARY_DEBUG}")
message(STATUS "xlnt_LIBRARY_RELEASE=${xlnt_LIBRARY_RELEASE}")
# Add a blank imported library
add_library(xlnt::xlnt UNKNOWN IMPORTED)
# add the transitive includes property
set_target_properties(xlnt::xlnt PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${xlnt_INCLUDE_DIR}")
# Optimized library
if(xlnt_LIBRARY_RELEASE)
set_property(TARGET xlnt::xlnt APPEND PROPERTY
IMPORTED_CONFIGURATIONS RELEASE)
set_target_properties(xlnt::xlnt PROPERTIES
IMPORTED_LOCATION_RELEASE "${xlnt_LIBRARY_RELEASE}")
endif()
# Debug library
if(xlnt_LIBRARY_DEBUG)
set_property(TARGET xlnt::xlnt APPEND PROPERTY
IMPORTED_CONFIGURATIONS DEBUG)
set_target_properties(xlnt::xlnt PROPERTIES
IMPORTED_LOCATION_DEBUG "${xlnt_LIBRARY_DEBUG}")
endif()
# some other configuration
if(NOT xlnt_LIBRARY_RELEASE AND NOT xlnt_LIBRARY_DEBUG)
set_property(TARGET xlnt::xlnt APPEND PROPERTY
IMPORTED_LOCATION "${xlnt_LIBRARY}")
endif()
endif()
CMakeLists.txt 수정
...
# For finding Findxlnt.cmake
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../cmake")
find_package(xlnt REQUIRED)
message("xlnt_INCLUDE_DIR: ${xlnt_INCLUDE_DIR}")
message("xlnt_LIBRARY: ${xlnt_LIBRARY}")
message("xlnt_LIBRARIES: ${xlnt_LIBRARIES}")
...
'C, C++' 카테고리의 다른 글
To install the MinGW-w64 toolchain (0) | 2022.10.28 |
---|---|
문자열 구분자로 분리 (0) | 2021.10.20 |
VSCode + vcpkg (0) | 2021.10.19 |
Get DLL path at run time (0) | 2021.10.05 |
ticktock (0) | 2021.08.15 |