mirror of
https://github.com/OpenCMT/uLib.git
synced 2025-12-05 23:11:31 +01:00
add posibility to compile in build directory
This commit is contained in:
@@ -58,7 +58,7 @@ endif()
|
||||
set(CMAKE_CXX_WARNING_OPTION "" CACHE STRING "Warning level -WAll to verbose all warnings")
|
||||
set(CMAKE_VERBOSE_MAKEFILE FALSE CACHE STRING "Verbose compile output switch")
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x ${CMAKE_CXX_WARNING_OPTION}")
|
||||
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x ${CMAKE_CXX_WARNING_OPTION}")
|
||||
|
||||
|
||||
|
||||
|
||||
102
CMakeLists.txt
102
CMakeLists.txt
@@ -3,7 +3,7 @@
|
||||
##### CMAKE LISTS ##############################################################
|
||||
################################################################################
|
||||
|
||||
cmake_minimum_required (VERSION 2.6)
|
||||
cmake_minimum_required (VERSION 3.26)
|
||||
|
||||
## -------------------------------------------------------------------------- ##
|
||||
|
||||
@@ -11,7 +11,7 @@ project(uLib)
|
||||
|
||||
# The version number.
|
||||
set(PROJECT_VERSION_MAJOR 0)
|
||||
set(PROJECT_VERSION_MINOR 5)
|
||||
set(PROJECT_VERSION_MINOR 6)
|
||||
set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}")
|
||||
set(PROJECT_SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}")
|
||||
|
||||
@@ -33,19 +33,42 @@ message(STATUS "Module path = ${CMAKE_MODULE_PATH}")
|
||||
|
||||
## GLOBALS ------------------------------------------------------------------ ##
|
||||
|
||||
set(PACKAGE_INSTALL_BIN_DIR ${CMAKE_INSTALL_PREFIX}/bin
|
||||
CACHE PATH "Installation directory for executables")
|
||||
set(PACKAGE_INSTALL_LIB_DIR ${CMAKE_INSTALL_PREFIX}/lib/
|
||||
CACHE PATH "Installation directory for libraries")
|
||||
set(PACKAGE_INSTALL_INC_DIR ${CMAKE_INSTALL_PREFIX}/include/${PACKAGE_NAME}
|
||||
CACHE PATH "Installation directory for headers")
|
||||
set(PACKAGE_INSTALL_DATA_DIR ${CMAKE_INSTALL_PREFIX}/share/${PACKAGE_NAME}
|
||||
CACHE PATH "Installation directory for data files")
|
||||
set(PACKAGE_INSTALL_CMAKE_DIR ${CMAKE_INSTALL_PREFIX}/lib/cmake/${PACKAGE_NAME}
|
||||
CACHE PATH "Installation directory for CMake files")
|
||||
# set(PACKAGE_INSTALL_BIN_DIR ${CMAKE_INSTALL_PREFIX}/bin
|
||||
# CACHE PATH "Installation directory for executables")
|
||||
# set(PACKAGE_INSTALL_LIB_DIR ${CMAKE_INSTALL_PREFIX}/lib/
|
||||
# CACHE PATH "Installation directory for libraries")
|
||||
# set(PACKAGE_INSTALL_INC_DIR ${CMAKE_INSTALL_PREFIX}/include/${PACKAGE_NAME}
|
||||
# CACHE PATH "Installation directory for headers")
|
||||
# set(PACKAGE_INSTALL_DATA_DIR ${CMAKE_INSTALL_PREFIX}/share/${PACKAGE_NAME}
|
||||
# CACHE PATH "Installation directory for data files")
|
||||
# set(PACKAGE_INSTALL_CMAKE_DIR ${CMAKE_INSTALL_PREFIX}/lib/cmake/${PACKAGE_NAME}
|
||||
# CACHE PATH "Installation directory for CMake files")
|
||||
|
||||
# -- move to GnuInstallDirs
|
||||
# ref: https://cmake.org/cmake/help/latest/module/GNUInstallDirs.html
|
||||
include(GNUInstallDirs)
|
||||
set(PACKAGE_INSTALL_INC_DIR ${CMAKE_INSTALL_INCLUDEDIR}/${PACKAGE_NAME}
|
||||
CACHE PATH "Location of header files (.../include)" )
|
||||
set(PACKAGE_INSTALL_ETC_DIR ${CMAKE_INSTALL_SYSCONFDIR}/${PACKAGE_NAME}
|
||||
CACHE PATH "Location of configuration files (.../etc)" )
|
||||
set(PACKAGE_INSTALL_BIN_DIR ${CMAKE_INSTALL_BINDIR}/${PACKAGE_NAME}
|
||||
CACHE PATH "Location of executable files (.../bin)" )
|
||||
set(PACKAGE_INSTALL_LIB_DIR ${CMAKE_INSTALL_LIBDIR}
|
||||
CACHE PATH "Location of library files (.../lib)" )
|
||||
set(PACKAGE_INSTALL_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PACKAGE_NAME}
|
||||
CACHE PATH "Location of cmake files (.../lib/cmake)" )
|
||||
set(PACKAGE_INSTALL_DATA_DIR ${CMAKE_INSTALL_DATADIR}/${PACKAGE_NAME}
|
||||
CACHE PATH "Location of data files (.../share)" )
|
||||
|
||||
|
||||
|
||||
|
||||
set(SRC_DIR ${PROJECT_SOURCE_DIR}/src)
|
||||
|
||||
# this is used to be exported in build target
|
||||
# ( to compile against build directory instead of install )
|
||||
set(ULIB_SOURCE_DIR ${PROJECT_SOURCE_DIR}/src)
|
||||
|
||||
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
||||
message(STATUS "Setting build type to 'Release' as none was specified.")
|
||||
set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose the type of build." FORCE)
|
||||
@@ -60,10 +83,12 @@ set(CMAKE_CXX_WARNING_OPTION ""
|
||||
set(CMAKE_VERBOSE_MAKEFILE FALSE
|
||||
CACHE STRING "Verbose compile output switch")
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x ${CMAKE_CXX_WARNING_OPTION}")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_WARNING_OPTION}")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -UULIB_SERIALIZATION_ON")
|
||||
|
||||
#enable_testing()
|
||||
# CTEST framework
|
||||
enable_testing()
|
||||
|
||||
|
||||
## FIND PACKAGES ------------------------------------------------------------ ##
|
||||
|
||||
@@ -192,8 +217,8 @@ add_subdirectory(${SRC_DIR}/Vtk)
|
||||
|
||||
|
||||
# Create the FooBarConfig.cmake and FooBarConfigVersion files
|
||||
file(RELATIVE_PATH REL_INCLUDE_DIR "${PACKAGE_INSTALL_CMAKE_DIR}"
|
||||
"${PACKAGE_INSTALL_INC_DIR}")
|
||||
# file(RELATIVE_PATH REL_INCLUDE_DIR "${PACKAGE_INSTALL_CMAKE_DIR}"
|
||||
# "${PACKAGE_INSTALL_INC_DIR}")
|
||||
|
||||
# ... for the build tree
|
||||
#set(CONF_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/src" "${PROJECT_BINARY_DIR}")
|
||||
@@ -202,21 +227,54 @@ file(RELATIVE_PATH REL_INCLUDE_DIR "${PACKAGE_INSTALL_CMAKE_DIR}"
|
||||
|
||||
# ... for the install tree
|
||||
set(CONF_INCLUDE_DIRS "\${ULIB_CMAKE_DIR}/${REL_INCLUDE_DIR}")
|
||||
configure_file(uLibConfig.cmake.in
|
||||
"${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/uLibConfig.cmake"
|
||||
@ONLY)
|
||||
# [ removed for the configure_config_file ]
|
||||
# configure_file(uLibConfig.cmake.in
|
||||
# "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/uLibConfig.cmake"
|
||||
# @ONLY)
|
||||
|
||||
# ... for both
|
||||
configure_file(uLibConfigVersion.cmake.in
|
||||
"${PROJECT_BINARY_DIR}/uLibConfigVersion.cmake" @ONLY)
|
||||
"${PROJECT_BINARY_DIR}/uLibConfigVersion.cmake" @ONLY)
|
||||
|
||||
install(FILES "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/uLibConfig.cmake"
|
||||
|
||||
include(CMakePackageConfigHelpers)
|
||||
|
||||
# from CMake 3.x configure file shall be created using a dedicated function
|
||||
# see: https://cmake.org/cmake/help/latest/module/CMakePackageConfigHelpers.html
|
||||
#
|
||||
configure_package_config_file(uLibConfig.cmake.in
|
||||
"${PROJECT_BINARY_DIR}/uLibConfig.cmake"
|
||||
INSTALL_DESTINATION ${PACKAGE_INSTALL_CMAKE_DIR}
|
||||
PATH_VARS
|
||||
PACKAGE_INSTALL_LIB_DIR
|
||||
PACKAGE_INSTALL_INC_DIR
|
||||
PACKAGE_INSTALL_BIN_DIR
|
||||
PACKAGE_INSTALL_CMAKE_DIR
|
||||
PACKAGE_INSTALL_ETC_DIR
|
||||
PACKAGE_INSTALL_DATA_DIR
|
||||
ULIB_SOURCE_DIR
|
||||
ULIB_SHARED_LIBRARIES
|
||||
# NO_SET_AND_CHECK_MACRO
|
||||
# NO_CHECK_REQUIRED_COMPONENTS_MACRO
|
||||
)
|
||||
|
||||
install(FILES "${PROJECT_BINARY_DIR}/uLibConfig.cmake"
|
||||
"${PROJECT_BINARY_DIR}/uLibConfigVersion.cmake"
|
||||
DESTINATION "${PACKAGE_INSTALL_CMAKE_DIR}"
|
||||
COMPONENT dev)
|
||||
|
||||
|
||||
# this is a special target file for the build tree
|
||||
# it is used also to identify if we are using a build direcory
|
||||
# to link a project against uLib. see: uLibConfig.cmake ( IF )
|
||||
export (TARGETS ${ULIB_SHARED_LIBRARIES}
|
||||
FILE "${PROJECT_BINARY_DIR}/uLibTargets-build.cmake"
|
||||
# NAMESPACE "uLib::"
|
||||
)
|
||||
|
||||
# Install the export set for use with the install-tree
|
||||
install(EXPORT "${PROJECT_NAME}Targets"
|
||||
install(EXPORT "uLibTargets"
|
||||
FILE "uLibTargets.cmake"
|
||||
DESTINATION "${PACKAGE_INSTALL_CMAKE_DIR}"
|
||||
COMPONENT dev)
|
||||
|
||||
|
||||
@@ -2,5 +2,6 @@ set(HEADERS MuonScatter.h MuonError.h MuonEvent.h)
|
||||
|
||||
set(ULIB_SELECTED_MODULES ${ULIB_SELECTED_MODULES} Detectors PARENT_SCOPE)
|
||||
|
||||
|
||||
install(FILES ${HEADERS}
|
||||
DESTINATION ${PACKAGE_INSTALL_INC_DIR}/Detectors)
|
||||
|
||||
@@ -27,6 +27,8 @@
|
||||
#ifndef U_MATH_BITCODE_H
|
||||
#define U_MATH_BITCODE_H
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include <boost/static_assert.hpp>
|
||||
#include <boost/type_traits.hpp>
|
||||
#include <boost/mpl/vector_c.hpp>
|
||||
@@ -34,6 +36,7 @@
|
||||
|
||||
#include <Math/Dense.h>
|
||||
|
||||
|
||||
namespace uLib {
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
set(HEADERS ContainerBox.h
|
||||
Dense.h
|
||||
Geometry.h
|
||||
@@ -45,6 +46,7 @@ set_target_properties(${libname} PROPERTIES
|
||||
SOVERSION ${PROJECT_SOVERSION})
|
||||
target_link_libraries(${libname} ${LIBRARIES})
|
||||
|
||||
|
||||
install(TARGETS ${libname}
|
||||
EXPORT "${PROJECT_NAME}Targets"
|
||||
RUNTIME DESTINATION ${PACKAGE_INSTALL_BIN_DIR} COMPONENT bin
|
||||
@@ -52,3 +54,7 @@ install(TARGETS ${libname}
|
||||
|
||||
install(FILES ${HEADERS} DESTINATION ${PACKAGE_INSTALL_INC_DIR}/Math)
|
||||
|
||||
# TESTING
|
||||
# include(uLibTargetMacros)
|
||||
# add_subdirectory(testing)
|
||||
|
||||
|
||||
@@ -19,4 +19,4 @@ set(LIBRARIES
|
||||
${PACKAGE_LIBPREFIX}Math
|
||||
)
|
||||
|
||||
uLib_add_tests(${uLib-module})
|
||||
uLib_add_tests(Math)
|
||||
|
||||
@@ -92,6 +92,20 @@ int main() {
|
||||
imgR.ExportToVtk("./read_and_saved.vtk");
|
||||
}
|
||||
|
||||
{
|
||||
VoxImage<TestVoxel> img(Vector3i(4,4,4));
|
||||
img.InitVoxels({0,0});
|
||||
for (int i=0; i<4; i++) {
|
||||
for (int j=0; j<4; j++) {
|
||||
for (int k=0; k<4; k++) {
|
||||
img[Vector3i(i,j,k)] = {i+j+k,0};
|
||||
}
|
||||
}
|
||||
}
|
||||
img.ExportToVti("./vti_saved.vti",0,1);
|
||||
// img.ImportFromVtkXml("./test_vox_image.vti");
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
VoxImage<TestVoxel> img1(Vector3i(5,5,5));
|
||||
|
||||
@@ -65,6 +65,7 @@ vtkContainerBox::~vtkContainerBox()
|
||||
vtkPolyData *vtkContainerBox::GetPolyData() const
|
||||
{
|
||||
// TODO
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void vtkContainerBox::InstallPipe()
|
||||
|
||||
@@ -1,15 +1,66 @@
|
||||
# - Config file for the FooBar package
|
||||
# - Config file for the ULib package
|
||||
# It defines the following variables
|
||||
# FOOBAR_INCLUDE_DIRS - include directories for FooBar
|
||||
# FOOBAR_LIBRARIES - libraries to link against
|
||||
# FOOBAR_EXECUTABLE - the bar executable
|
||||
# ULIB_INCLUDE_DIRS - include directories for ULib
|
||||
# ULIB_LIBRARIES - libraries to link against
|
||||
# ULIB_EXECUTABLE - the bar executable
|
||||
|
||||
|
||||
set(ULIB_VERSION @PROJECT_VERSION@)
|
||||
|
||||
@PACKAGE_INIT@
|
||||
|
||||
# Definisce le directory per l'inclusione dei file header
|
||||
# PACKAGE_INCLUDE_INSTALL_DIR è sostituito da configure_package_config_file
|
||||
# con il percorso corretto per l'installazione.
|
||||
set(ULIB_INCLUDE_DIRS "${PACKAGE_INCLUDE_INSTALL_DIR}")
|
||||
|
||||
# Compute paths
|
||||
get_filename_component(ULIB_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
||||
set(ULIB_INCLUDE_DIRS "@CONF_INCLUDE_DIRS@")
|
||||
|
||||
# Our library dependencies (contains definitions for IMPORTED targets)
|
||||
include("${ULIB_CMAKE_DIR}/uLibTargets.cmake")
|
||||
# Search for the directory of exported build targets
|
||||
set(uLib_BUILD_TARGETS_FILE
|
||||
"${ULIB_CMAKE_DIR}/uLibTargets-build.cmake"
|
||||
)
|
||||
|
||||
# These are IMPORTED targets created by FooBarTargets.cmake
|
||||
set(ULIB_LIBRARIES @ULIB_SHARED_LIBRARIES@)
|
||||
# Search for the directory of installed targets
|
||||
set(uLib_INSTALL_TARGETS_FILE
|
||||
"${ULIB_CMAKE_DIR}/uLibTargets.cmake"
|
||||
)
|
||||
|
||||
# We use a logic based on the presence of the build target file
|
||||
# to determine if we are in a local build.
|
||||
if(EXISTS "${uLib_BUILD_TARGETS_FILE}")
|
||||
message(WARNING " ++ Using uLib build targets")
|
||||
|
||||
include("${uLib_BUILD_TARGETS_FILE}")
|
||||
set_and_check(ULIB_INCLUDE_DIRS "@ULIB_SOURCE_DIR@")
|
||||
set_and_check(ULIB_LIBRARY_DIRS "${ULIB_CMAKE_DIR}")
|
||||
|
||||
else()
|
||||
message(STATUS " ++ UsingLib install targets")
|
||||
|
||||
include("${uLib_INSTALL_TARGETS_FILE}")
|
||||
set_and_check(ULIB_INCLUDE_DIRS "@PACKAGE_PACKAGE_INSTALL_INC_DIR@")
|
||||
set(ULIB_SYSCONFIG_DIR "@PACKAGE_PACKAGE_INSTALL_ETC_DIR@")
|
||||
set_and_check(ULIB_CMAKE_DIR "@PACKAGE_PACKAGE_INSTALL_CMAKE_DIR@")
|
||||
set_and_check(ULIB_LIBRARY_DIRS "@PACKAGE_PACKAGE_INSTALL_LIB_DIR@")
|
||||
endif()
|
||||
|
||||
link_directories("${ULIB_LIBRARY_DIRS}")
|
||||
set(ULIB_LIBRARIES "@ULIB_SHARED_LIBRARIES@")
|
||||
|
||||
# include("${ULIB_CMAKE_DIR}/uLibTargets.cmake")
|
||||
check_required_components(uLib)
|
||||
|
||||
# Imposta la variabile per indicare che il pacchetto è stato trovato.
|
||||
set(uLib_FOUND TRUE)
|
||||
|
||||
|
||||
# # Compute paths
|
||||
# get_filename_component(ULIB_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
||||
# set(ULIB_INCLUDE_DIRS "@CONF_INCLUDE_DIRS@")
|
||||
|
||||
# # Our library dependencies (contains definitions for IMPORTED targets)
|
||||
# include("${ULIB_CMAKE_DIR}/uLibTargets.cmake")
|
||||
|
||||
# # These are IMPORTED targets created by ULibTargets.cmake
|
||||
# set(ULIB_LIBRARIES @ULIB_SHARED_LIBRARIES@)
|
||||
|
||||
Reference in New Issue
Block a user