Initial commmit
This commit is contained in:
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
CMakeLists.txt.user
|
||||
build
|
||||
126
CMakeLists.txt
Normal file
126
CMakeLists.txt
Normal file
@@ -0,0 +1,126 @@
|
||||
cmake_minimum_required(VERSION 3.14)
|
||||
|
||||
|
||||
# ******* MOUNT CONTROL COMPONENTS *******
|
||||
|
||||
project(mcc LANGUAGES C CXX Fortran VERSION 0.1)
|
||||
|
||||
|
||||
# set(CMAKE_BUILD_TYPE Release)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 23)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")
|
||||
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
# ******* SPDLOG LIBRARY *******
|
||||
|
||||
include(FetchContent)
|
||||
include(ExternalProject)
|
||||
|
||||
set(SPDLOG_USE_STD_FORMAT ON CACHE INTERNAL "Use of C++20 std::format")
|
||||
set(SPDLOG_FMT_EXTERNAL OFF CACHE INTERNAL "Turn off external fmt library")
|
||||
|
||||
find_package(spdlog CONFIG)
|
||||
if (NOT ${spdlog_FOUND})
|
||||
FetchContent_Declare(spdlog
|
||||
# ExternalProject_Add(spdlog
|
||||
# SOURCE_DIR ${CMAKE_BINARY_DIR}/spdlog_lib
|
||||
# BINARY_DIR ${CMAKE_BINARY_DIR}/spdlog_lib/build
|
||||
GIT_REPOSITORY "https://github.com/gabime/spdlog.git"
|
||||
GIT_TAG "v1.15.1"
|
||||
GIT_SHALLOW TRUE
|
||||
GIT_SUBMODULES ""
|
||||
GIT_PROGRESS TRUE
|
||||
CMAKE_ARGS "-DSPDLOG_USE_STD_FORMAT=ON -DSPDLOG_FMT_EXTERNAL=OFF"
|
||||
# CONFIGURE_COMMAND ""
|
||||
# BUILD_COMMAND ""
|
||||
# INSTALL_COMMAND ""
|
||||
# UPDATE_COMMAND ""
|
||||
# SOURCE_SUBDIR cmake # turn off building
|
||||
OVERRIDE_FIND_PACKAGE
|
||||
)
|
||||
find_package(spdlog CONFIG)
|
||||
endif()
|
||||
|
||||
# ******* ERFA LIBRARY *******
|
||||
|
||||
find_package(PkgConfig REQUIRED)
|
||||
|
||||
pkg_check_modules(ERFALIB IMPORTED_TARGET GLOBAL erfa)
|
||||
|
||||
if (NOT ERFALIB_FOUND)
|
||||
message(STATUS "\tfetch erfa-lib ...")
|
||||
ExternalProject_Add(erfalib
|
||||
PREFIX ${CMAKE_BINARY_DIR}/erfa_lib
|
||||
GIT_REPOSITORY "https://github.com/liberfa/erfa.git"
|
||||
GIT_TAG "v2.0.1"
|
||||
UPDATE_COMMAND ""
|
||||
PATCH_COMMAND ""
|
||||
LOG_CONFIGURE 1
|
||||
CONFIGURE_COMMAND meson setup --reconfigure -Ddefault_library=static -Dbuildtype=release
|
||||
-Dprefix=${CMAKE_BINARY_DIR}/erfa_lib -Dlibdir= -Dincludedir= -Ddatadir= <SOURCE_DIR>
|
||||
BUILD_COMMAND ninja -C <BINARY_DIR>
|
||||
INSTALL_COMMAND meson install -C <BINARY_DIR>
|
||||
BUILD_BYPRODUCTS ${CMAKE_BINARY_DIR}/erfa_lib/liberfa.a
|
||||
)
|
||||
|
||||
add_library(PkgConfig::ERFALIB STATIC IMPORTED GLOBAL)
|
||||
set_target_properties(PkgConfig::ERFALIB PROPERTIES IMPORTED_LOCATION ${CMAKE_BINARY_DIR}/erfa_lib/liberfa.a)
|
||||
set_target_properties(PkgConfig::ERFALIB PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_BINARY_DIR}/erfa_lib)
|
||||
add_dependencies(PkgConfig::ERFALIB erfalib)
|
||||
#pkg_check_modules(ERFALIB REQUIRED IMPORTED_TARGET GLOBAL erfa)
|
||||
|
||||
endif()
|
||||
|
||||
#message(STATUS "ERFA LIBS: ${ERFALIB_LIBRARIES}")
|
||||
#message(STATUS "ERFA LIB PATHS: ${ERFALIB_LIBRARY_DIRS}")
|
||||
#message(STATUS "ERFA INC PATHS: ${ERFALIB_INCLUDE_DIRS}")
|
||||
|
||||
#add_executable(ex main.cpp)
|
||||
#target_link_libraries(ex PkgConfig::ERFALIB)
|
||||
#target_link_libraries(ex ee)
|
||||
|
||||
set(MCC_SRC mcc_concepts.h mcc_epoch.h)
|
||||
add_library(${PROJECT_NAME} INTERFACE ${MCC_SRC})
|
||||
target_compile_features(${PROJECT_NAME} INTERFACE cxx_std_23)
|
||||
target_link_libraries(${PROJECT_NAME} INTERFACE PkgConfig::ERFALIB)
|
||||
target_include_directories(
|
||||
${PROJECT_NAME}
|
||||
INTERFACE
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
)
|
||||
|
||||
include(CMakePackageConfigHelpers)
|
||||
write_basic_package_version_file("${PROJECT_NAME}ConfigVersion.cmake"
|
||||
VERSION ${PROJECT_VERSION}
|
||||
COMPATIBILITY SameMajorVersion)
|
||||
|
||||
|
||||
set(MCC_CONFIG_INSTALLDIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} CACHE PATH "install path for generated library config files")
|
||||
set(MCC_HEADERS_INSTALLDIR ${CMAKE_INSTALL_INCLUDEDIR} CACHE PATH "install path for headers")
|
||||
|
||||
configure_package_config_file("${PROJECT_SOURCE_DIR}/${PROJECT_NAME}Config.cmake.in"
|
||||
"${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
|
||||
INSTALL_DESTINATION
|
||||
${MCC_CONFIG_INSTALLDIR}
|
||||
PATH_VARS MCC_HEADERS_INSTALLDIR)
|
||||
|
||||
#install(EXPORT ${PROJECT_NAME}_Targets FILE ${PROJECT_NAME}Targets.cmake NAMESPACE ${PROJECT_NAME_NAMESPACE}:: DESTINATION ${MCC_CONFIG_INSTALLDIR})
|
||||
#install(FILES "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" "${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" DESTINATION ${MCC_CONFIG_INSTALLDIR})
|
||||
#install(FILES ${MCC_SRC} DESTINATION include/${PROJECT_NAME})
|
||||
|
||||
|
||||
# uninstall target
|
||||
if(NOT TARGET uninstall)
|
||||
configure_file(
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
|
||||
IMMEDIATE @ONLY)
|
||||
|
||||
add_custom_target(uninstall
|
||||
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
|
||||
endif()
|
||||
5
cmake_uninstall.cmake.in
Normal file
5
cmake_uninstall.cmake.in
Normal file
@@ -0,0 +1,5 @@
|
||||
message(STATUS "Uninstall mcc package ...")
|
||||
message(STATUS "remove config files dir: @CMAKE_INSTALL_PREFIX@/@MCC_CONFIG_INSTALLDIR@")
|
||||
file(REMOVE_RECURSE "@CMAKE_INSTALL_PREFIX@/@MCC_CONFIG_INSTALLDIR@")
|
||||
message(STATUS "remove header files dir: @CMAKE_INSTALL_PREFIX@/@MCC_HEADERS_INSTALLDIR@")
|
||||
file(REMOVE_RECURSE "@CMAKE_INSTALL_PREFIX@/@MCC_HEADERS_INSTALLDIR@")
|
||||
8
main.cpp
Normal file
8
main.cpp
Normal file
@@ -0,0 +1,8 @@
|
||||
#include <iostream>
|
||||
#include <erfa.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
std::cout << "AAA\n";
|
||||
return 0;
|
||||
}
|
||||
7
mccConfig.cmake.in
Normal file
7
mccConfig.cmake.in
Normal file
@@ -0,0 +1,7 @@
|
||||
@PACKAGE_INIT@
|
||||
|
||||
set_and_check(mcc_INCLUDE_DIR "@PACKAGE_HWT_HEADERS_INSTALLDIR@")
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")
|
||||
check_required_components("@PROJECT_NAME@")
|
||||
|
||||
0
mcc_concepts.h
Normal file
0
mcc_concepts.h
Normal file
0
mcc_epoch.h
Normal file
0
mcc_epoch.h
Normal file
Reference in New Issue
Block a user