Skip to content
Closed
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
75 changes: 31 additions & 44 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
cmake_minimum_required(VERSION 3.30)

project(cpp-core
VERSION 0.1.0
DESCRIPTION "Cross-platform helper library shared by cpp-linux-bindings and cpp-windows-bindings"
LANGUAGES CXX)

# Export compile commands to root directory
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
project(
cpp-core
VERSION 0.1.0
DESCRIPTION "Core library with header interface files."
LANGUAGES CXX
)

# ---------------------------------------------------------------------------
# Version information - can be overridden by parent project
Expand Down Expand Up @@ -34,56 +33,44 @@ target_include_directories(cpp_core INTERFACE
# Require C++23
target_compile_features(cpp_core INTERFACE cxx_std_23)

# Enable C++23 module support
set(CMAKE_CXX_MODULE_STD 23)
set(CMAKE_CXX_MODULE_EXTENSIONS OFF)

# Install rules --------------------------------------------------------------
include(GNUInstallDirs)

install(TARGETS cpp_core
EXPORT cpp_coreTargets)
install(
TARGETS cpp_core
EXPORT cpp_coreTargets
)

install(DIRECTORY include/
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
install(
DIRECTORY include/
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)

# CMake package configuration ------------------------------------------------
include(CMakePackageConfigHelpers)

write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/cpp_coreConfigVersion.cmake
VERSION ${PROJECT_VERSION}
COMPATIBILITY SameMajorVersion)
${CMAKE_CURRENT_BINARY_DIR}/cpp_coreConfigVersion.cmake
VERSION ${PROJECT_VERSION}
COMPATIBILITY SameMajorVersion
)

configure_package_config_file(
${CMAKE_CURRENT_LIST_DIR}/cmake/cpp_core_config.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/cpp_coreConfig.cmake
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/cpp_core)
${CMAKE_CURRENT_LIST_DIR}/cmake/cpp_core_config.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/cpp_coreConfig.cmake
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/cpp_core
)

install(EXPORT cpp_coreTargets
FILE cpp_coreTargets.cmake
NAMESPACE cpp_core::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/cpp_core)
install(
EXPORT cpp_coreTargets
FILE cpp_coreTargets.cmake
NAMESPACE cpp_core::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/cpp_core
)

install(FILES
install(
FILES
${CMAKE_CURRENT_BINARY_DIR}/cpp_coreConfig.cmake
${CMAKE_CURRENT_BINARY_DIR}/cpp_coreConfigVersion.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/cpp_core)

# Module test ----------------------------------------------------------------
add_library(hello_module STATIC)
target_sources(hello_module
PUBLIC FILE_SET cxx_modules TYPE CXX_MODULES
FILES test/hello.cxx
)

add_executable(module_test test/main.cpp)
target_link_libraries(module_test PRIVATE hello_module)

add_custom_target(copy-compile-commands ALL
${CMAKE_COMMAND} -E copy_if_different
${CMAKE_BINARY_DIR}/compile_commands.json
${CMAKE_SOURCE_DIR}/compile_commands.json
DEPENDS ${CMAKE_BINARY_DIR}/compile_commands.json
COMMENT "Copying compile_commands.json to project root"
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/cpp_core
)
4 changes: 2 additions & 2 deletions cmake/msvc-toolchain.cmake
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# MSVC Toolchain file for cpp-core
# Usage: cmake -DCMAKE_TOOLCHAIN_FILE=cmake/msvc-toolchain.cmake ..

set(CMAKE_SYSTEM_NAME Windows)
set(CMAKE_SYSTEM_NAME Generic)

# Set the C++ compiler
set(CMAKE_CXX_COMPILER "cl")
Expand All @@ -26,4 +26,4 @@ set(CMAKE_CXX_FLAGS_DEBUG_INIT "/Zi /Od /MDd")
set(CMAKE_CXX_FLAGS_RELEASE_INIT "/O2 /DNDEBUG /MD")

# MSVC-specific definitions
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
add_compile_definitions(_CRT_SECURE_NO_WARNINGS)
9 changes: 0 additions & 9 deletions test/hello.cxx

This file was deleted.

8 changes: 0 additions & 8 deletions test/main.cpp

This file was deleted.