Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 10 additions & 24 deletions .github/workflows/build-and-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,11 @@ jobs:
- name: Checkout code
uses: actions/checkout@v5

- name: Setup MSBuild
uses: microsoft/setup-msbuild@v2

- name: Build
run: |
nuget restore vcproj\SimpleIni.sln
msbuild vcproj\SimpleIni.sln /p:Configuration=Release

- name: Run tests
- name: Test with CMake
run: |
cd tests
..\vcproj\x64\Release\tests.exe
cmake -S . -B build
cmake --build build --config Release --target tests
ctest --verbose --test-dir build -C Release

Ubuntu:
runs-on: ubuntu-latest
Expand All @@ -38,19 +31,15 @@ jobs:
run: |
sudo apt install libgtest-dev cmake

- name: Test with Makefile
run: |
make all && make test

- name: Test with CMake (-DSIMPLEINI_USE_SYSTEM_GTEST=OFF)
run: |
cmake . -B build -DSIMPLEINI_USE_SYSTEM_GTEST=OFF
cmake -S . -B build -DSIMPLEINI_USE_SYSTEM_GTEST=OFF
cmake --build build
ctest --verbose --test-dir build

- name: Test with CMake (-DSIMPLEINI_USE_SYSTEM_GTEST=ON)
run: |
cmake . -B build-system-gtest -DSIMPLEINI_USE_SYSTEM_GTEST=ON
cmake -S . -B build-system-gtest -DSIMPLEINI_USE_SYSTEM_GTEST=ON
cmake --build build-system-gtest
ctest --verbose --test-dir build-system-gtest

Expand All @@ -61,22 +50,19 @@ jobs:
uses: actions/checkout@v5

- name: Install requirements
run: brew install googletest cmake

- name: Test with Makefile
run: |
export PKG_CONFIG_PATH="$(brew --prefix)/lib/pkgconfig:$(brew --prefix googletest)/lib/pkgconfig:$PKG_CONFIG_PATH"
make all && make test
brew list googletest &>/dev/null || brew install googletest
brew list cmake &>/dev/null || brew install cmake

- name: Test with CMake (-DSIMPLEINI_USE_SYSTEM_GTEST=OFF)
run: |
cmake . -B build -DSIMPLEINI_USE_SYSTEM_GTEST=OFF
cmake -S . -B build -DSIMPLEINI_USE_SYSTEM_GTEST=OFF
cmake --build build
ctest --verbose --test-dir build

- name: Test with CMake (-DSIMPLEINI_USE_SYSTEM_GTEST=ON)
run: |
cmake . -B build-system-gtest -DSIMPLEINI_USE_SYSTEM_GTEST=ON
cmake -S . -B build-system-gtest -DSIMPLEINI_USE_SYSTEM_GTEST=ON
cmake --build build-system-gtest
ctest --verbose --test-dir build-system-gtest

Expand Down
56 changes: 39 additions & 17 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,41 @@ project(
SimpleIni
VERSION 4.23
DESCRIPTION "Cross-platform C++ library providing a simple API to read and write INI-style configuration files"
LANGUAGES CXX
LANGUAGES CXX C
)

option(SIMPLEINI_USE_SYSTEM_GTEST "Use system GoogleTest dependency" OFF)
option(SIMPLEINI_BUILD_TESTS "Build tests" ON)
option(SIMPLEINI_BUILD_EXAMPLES "Build examples" ON)

# disable in-source builds
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
message(FATAL_ERROR "In-source builds are not allowed, use cmake -S . -B build.")
endif()


# Define library paths and include directories
set(EXPORT_NAMESPACE "${PROJECT_NAME}::")
set(HEADERS SimpleIni.h)
set(SIMPLEINI_HEADERS SimpleIni.h)

# ConvertUTF files are only needed on Windows for SI_CONVERT_WIN32
if(WIN32)
list(APPEND SIMPLEINI_HEADERS ConvertUTF.h)
set(SIMPLEINI_SOURCES ConvertUTF.c)
endif()

add_library(${PROJECT_NAME} INTERFACE)
add_library(${EXPORT_NAMESPACE}${PROJECT_NAME} ALIAS ${PROJECT_NAME})
target_include_directories(${PROJECT_NAME} INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)

# On Windows, add ConvertUTF.c as a source file
if(WIN32)
target_sources(${PROJECT_NAME} INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/ConvertUTF.c>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/ConvertUTF.c>
)
endif()

include(GNUInstallDirs)

Expand All @@ -34,27 +52,31 @@ configure_package_config_file(${PROJECT_NAME}Config.cmake.in
INSTALL_DESTINATION ${CMAKE_INSTALL_DATADIR}/cmake/${PROJECT_NAME}
)

install(FILES SimpleIni.h
install(FILES ${SIMPLEINI_HEADERS}
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)

# Install ConvertUTF.c on Windows (needed for SI_CONVERT_WIN32)
if(WIN32)
install(FILES ConvertUTF.c
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
endif()

install(TARGETS ${PROJECT_NAME}
EXPORT ${PROJECT_NAME}Targets
EXPORT SimpleIniTargets
)

install(FILES
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
DESTINATION ${CMAKE_INSTALL_DATADIR}/cmake/${PROJECT_NAME}
)
install(EXPORT ${PROJECT_NAME}Targets
DESTINATION ${CMAKE_INSTALL_DATADIR}/cmake/${PROJECT_NAME}
NAMESPACE ${EXPORT_NAMESPACE}
install(EXPORT SimpleIniTargets
FILE SimpleIniTargets.cmake
NAMESPACE SimpleIni::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/SimpleIni
)

target_include_directories(${PROJECT_NAME} INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
install(FILES
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
)

# only build tests when top level and testing enabled
Expand Down
18 changes: 0 additions & 18 deletions Makefile

This file was deleted.

26 changes: 0 additions & 26 deletions other/package.cmd

This file was deleted.

Loading