#=======================================================================================================================
# Preamble
#=======================================================================================================================
cmake_minimum_required(VERSION 3.15 FATAL_ERROR)
set(OPENXLSX_MAJOR_VERSION 0)
set(OPENXLSX_MINOR_VERSION 3)
set(OPENXLSX_MICRO_VERSION 1)
project(OpenXLSX.Library VERSION 0.3.2 LANGUAGES CXX)
set(CMAKE_DEBUG_POSTFIX d)
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
set(CMAKE_VISIBILITY_INLINES_HIDDEN YES)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
#=======================================================================================================================
# Set project metadata
#=======================================================================================================================
set(OPENXLSX_PROJECT_VENDOR "Kenneth Troldal Balslev")
set(OPENXLSX_PROJECT_CONTACT "kenneth.balslev@gmail.com")
set(OPENXLSX_PROJECT_URL "https://github.com/troldal/OpenXLSX")
set(PROJECT_DESCRIPTION "A C++17 library for reading, writing and modifying Excel spreadsheets")
#=======================================================================================================================
# Set C/C++ compiler version
#=======================================================================================================================
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(IGNORE_ME ${CMAKE_C_COMPILER}) # Suppress CMake warning message
#=======================================================================================================================
# Add build options
#=======================================================================================================================
option(OPENXLSX_COMPACT_MODE "Build library in compact mode (slower, but uses less memory)" OFF)
set(OPENXLSX_LIBRARY_TYPE "STATIC" CACHE STRING "Set the library type to SHARED or STATIC")
#=======================================================================================================================
# EXTERNAL LIBRARIES
# Define external libraries used by OpenXLSX. The libraries (Zippy, PugiXML, and NoWide) are header-only, so
# INTERFACE libraries should be defined.
#=======================================================================================================================
add_library(NoWide INTERFACE IMPORTED)
target_include_directories(NoWide SYSTEM INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/external/nowide/>)
add_library(Zippy INTERFACE IMPORTED)
target_include_directories(Zippy SYSTEM INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/external/zippy/>)
add_library(PugiXML INTERFACE IMPORTED)
target_include_directories(PugiXML SYSTEM INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/external/pugixml/>)
if (${OPENXLSX_COMPACT_MODE})
target_compile_definitions(PugiXML INTERFACE PUGIXML_COMPACT)
endif ()
#=======================================================================================================================
# COMPILER FEATURES
# Some older C++17 compilers don't support the char_conv features. If the compiler doesn't support it,
# a less optimal work-around will be used.
#=======================================================================================================================
include(CheckCXXSourceCompiles)
check_cxx_source_compiles("
#include <array>
#include <string>
#include <charconv>
int main() {
std::array<char, 7> str {};
auto p = std::to_chars(str.data(), str.data() + str.size(), 12345).ptr;
auto strResult = std::string(str.data(), p - str.data());
unsigned long value = 0;
std::from_chars(strResult.data(), strResult.data() + strResult.size(), value);
return 0;
}" CHARCONV_RESULT)
if (CHARCONV_RESULT)
add_compile_definitions(CHARCONV_ENABLED)
endif ()
#=======================================================================================================================
# PROJECT FILES
# List of project source files
#=======================================================================================================================
set(OPENXLSX_SOURCES
${CMAKE_CURRENT_LIST_DIR}/sources/XLCell.cpp
${CMAKE_CURRENT_LIST_DIR}/sources/XLCellIterator.cpp
${CMAKE_CURRENT_LIST_DIR}/sources/XLCellRange.cpp
${CMAKE_CURRENT_LIST_DIR}/sources/XLCellReference.cpp
${CMAKE_CURRENT_LIST_DIR}/sources/XLCellValue.cpp
${CMAKE_CURRENT_LIST_DIR}/sources/XLColor.cpp
${CMAKE_CURRENT_LIST_DIR}/sources/XLColumn.cpp
${CMAKE_CURRENT_LIST_DIR}/sources/XLContentTypes.cpp
${CMAKE_CURRENT_LIST_DIR}/sources/XLDateTime.cpp
${CMAKE_CURRENT_LIST_DIR}/sources/XLDocument.cpp
${CMAKE_CURRENT_LIST_DIR}/sources/XLFormula.cpp
${CMAKE_CURRENT_LIST_DIR}/sources/XLProperties.cpp
${CMAKE_CURRENT_LIST_DIR}/sources/XLRelationships.cpp
${CMAKE_CURRENT_LIST_DIR}/sources/XLRow.cpp
${CMAKE_CURRENT_LIST_DIR}/sources/XLRowData.cpp
${CMAKE_CURRENT_LIST_DIR}/sources/XLSharedStrings.cpp
${CMAKE_CURRENT_LIST_DIR}/sources/XLSheet.cpp
${CMAKE_CURRENT_LIST_DIR}/sources/XLWorkbook.cpp
${CMAKE_CURRENT_LIST_DIR}/sources/XLXmlData.cpp
${CMAKE_CURRENT_LIST_DIR}/sources/XLXmlFile.cpp
${CMAKE_CURRENT_LIST_DIR}/sources/XLZipArchive.cpp
)
#=======================================================================================================================
# STATIC AND SHARED LIBRARY
# Check that the input is valid
#=======================================================================================================================
if(NOT ${OPENXLSX_LIBRARY_TYPE} STREQUAL "STATIC" AND NOT ${OPENXLSX_LIBRARY_TYPE} STREQUAL "SHARED")
message( FATAL_ERROR "Invalid library type. Must be SHARED or STATIC." )
endif()
#=======================================================================================================================
# STATIC LIBRARY
# Define the static library
#=======================================================================================================================
if (${OPENXLSX_LIBRARY_TYPE} STREQUAL "STATIC")
add_library(OpenXLSX STATIC "")
add_library(OpenXLSX::OpenXLSX ALIAS OpenXLSX)
target_sources(OpenXLSX PRIVATE ${OPENXLSX_SOURCES})
target_include_directories(OpenXLSX
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/headers>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>) # For export header
target_link_libraries(OpenXLSX
PRIVATE
$<BUILD_INTERFACE:Zippy>
$<BUILD_INTERFACE:PugiXML>
$<BUILD_INTERFACE:NoWide>)
target_compile_definitions(OpenXLSX PUBLIC OPENXLSX_STATIC_DEFINE)
endif ()
#=======================================================================================================================
# SHARED LIBRARY
# Define the shared library
#=======================================================================================================================
if (${OPENXLSX_LIBRARY_TYPE} STREQUAL "SHARED")
add_library(OpenXLSX SHARED "")
add_library(OpenXLSX::OpenXLSX ALIAS OpenXLSX)
target_sources(OpenXLSX PRIVATE ${OPENXLSX_SOURCES})
target_include_directories(OpenXLSX
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/headers>
没有合适的资源?快使用搜索试试~ 我知道了~
OpenXLSX C++读写Excel表格 支持VS2019编译,C++MFC应用示例
共143个文件
hpp:50个
cpp:25个
tlog:18个
需积分: 5 38 下载量 142 浏览量
2023-05-31
22:00:58
上传
评论 4
收藏 128.69MB ZIP 举报
温馨提示
OpenXLSX 读写Excel表格。 支持VS2019编译,C++MFC应用示例,l
资源推荐
资源详情
资源评论
收起资源包目录
OpenXLSX C++读写Excel表格
支持VS2019编译,C++MFC应用示例 (143个子文件)
MFCApplication1.aps 106KB
OpenXLSXConfig.cmake 58B
pugixml.cpp 434KB
XLDocument.cpp 75KB
XLWorkbook.cpp 23KB
XLSheet.cpp 23KB
XLRowData.cpp 18KB
XLCellValue.cpp 16KB
XLRelationships.cpp 15KB
XLRow.cpp 14KB
XLContentTypes.cpp 12KB
XLProperties.cpp 11KB
XLCellReference.cpp 10KB
XLDateTime.cpp 7KB
XLCellIterator.cpp 7KB
XLCell.cpp 6KB
XLColor.cpp 5KB
XLCellRange.cpp 5KB
XLFormula.cpp 5KB
XLSharedStrings.cpp 5KB
XLXmlFile.cpp 5KB
XLXmlData.cpp 4KB
XLColumn.cpp 4KB
MFCApplication1Dlg.cpp 4KB
XLZipArchive.cpp 4KB
MFCApplication1.cpp 3KB
pch.cpp 158B
Browse.VC.db 74.04MB
MFCApplication1.exe 1.01MB
MFCApplication1.exe 317KB
MFCApplication1.vcxproj.filters 2KB
framework.h 2KB
MFCApplication1Dlg.h 722B
resource.h 694B
pch.h 544B
MFCApplication1.h 532B
targetver.h 295B
zippy.hpp 518KB
pugixml.hpp 60KB
XLCellValue.hpp 25KB
XLSheet.hpp 23KB
utf8_codecvt.hpp 19KB
XLRowData.hpp 16KB
utf.hpp 14KB
XLRow.hpp 13KB
XLFormula.hpp 13KB
XLCellReference.hpp 11KB
XLWorkbook.hpp 11KB
filebuf.hpp 11KB
XLDocument.hpp 11KB
IZipArchive.hpp 10KB
XLRelationships.hpp 9KB
XLXmlData.hpp 9KB
XLProperties.hpp 8KB
fstream.hpp 8KB
XLCell.hpp 7KB
XLContentTypes.hpp 7KB
XLXmlFile.hpp 6KB
XLCellRange.hpp 6KB
XLColor.hpp 6KB
XLDateTime.hpp 6KB
XLCommandQuery.hpp 6KB
XLCellIterator.hpp 6KB
XLSharedStrings.hpp 6KB
convert.hpp 5KB
XLException.hpp 5KB
XLZipArchive.hpp 5KB
args.hpp 5KB
XLColumn.hpp 5KB
XLUtilities.hpp 4KB
stackstring.hpp 4KB
cenv.hpp 3KB
OpenXLSX.hpp 3KB
pugiconfig.hpp 3KB
XLXmlParser.hpp 3KB
cstdio.hpp 3KB
iostream.hpp 3KB
encoding_utf.hpp 3KB
scoped_ptr.hpp 2KB
encoding_errors.hpp 1KB
windows.hpp 1KB
system.hpp 988B
OpenXLSX-Exports.hpp 962B
config.hpp 943B
cstdlib.hpp 423B
XLIterator.hpp 311B
XLConstants.hpp 299B
MFCApplication1.ico 66KB
vc142.idb 1.42MB
MFCApplication1.ilk 4.16MB
MFCApplication1.iobj 896KB
c65a162650ea1eee.ipch 121.88MB
39e1dcc8e2ddab26.ipch 121.81MB
MFCApplication1.ipdb 238KB
MFCApplication1.lastbuildstate 206B
MFCApplication1.lastbuildstate 204B
OpenXLSX.lib 9.68MB
OpenXLSXd.lib 8.5MB
MFCApplication1.Build.CppClean.log 2KB
MFCApplication1.log 389B
共 143 条
- 1
- 2
资源评论
一碗螺蛳粉L
- 粉丝: 104
- 资源: 26
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功