Merge pull request #42 from seleznevae/issue-40
[A] Add target export in cmake.
This commit is contained in:
commit
64dffd908f
14
.travis.yml
14
.travis.yml
@ -255,6 +255,20 @@ script:
|
||||
# scan-build make ;
|
||||
# fi
|
||||
|
||||
# Test package installation
|
||||
- cd ..
|
||||
- rm -r build/*
|
||||
- cmake -H. -Bbuild -DCMAKE_C_STANDARD=99 -DCMAKE_CXX_STANDARD=11 -DCMAKE_INSTALL_PREFIX=`pwd`/install
|
||||
- cmake --build build --target all
|
||||
- cmake --build build -- install
|
||||
- ls `pwd`/install
|
||||
- cd tests/package_tests
|
||||
- cmake -H. -B_build -DCMAKE_PREFIX_PATH=../../install -DCMAKE_C_STANDARD=99 -DCMAKE_CXX_STANDARD=11
|
||||
- cmake --build _build -- -j3
|
||||
- ./_build/app
|
||||
- rm -rf _build
|
||||
- cd ../../build
|
||||
|
||||
# Build for coveralls (should be the last)
|
||||
- |
|
||||
if [ "${CC}" = 'gcc' ]; then
|
||||
|
@ -260,3 +260,12 @@ list(APPEND ${PROJECT_NAME}_ctests
|
||||
foreach(exe ${${PROJECT_NAME}_ctests})
|
||||
add_test(NAME ${exe} COMMAND ${exe})
|
||||
endforeach()
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Exported targets for outer applications.
|
||||
# ------------------------------------------------------------------------------
|
||||
export(
|
||||
TARGETS fort
|
||||
FILE ${PROJECT_NAME}-targets.cmake
|
||||
)
|
||||
|
||||
|
@ -15,6 +15,7 @@
|
||||
### Internal
|
||||
|
||||
- Refactoring of code that uses vectors.
|
||||
- Add target export in cmake.
|
||||
|
||||
### Docs
|
||||
|
||||
|
5
cmake/libfort-config.cmake.in
Normal file
5
cmake/libfort-config.cmake.in
Normal file
@ -0,0 +1,5 @@
|
||||
if(NOT TARGET @PROJECT_NAME@::fort)
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@-targets.cmake")
|
||||
endif()
|
||||
|
||||
set(@PROJECT_NAME@_LIBRARIES @PROJECT_NAME@::fort)
|
@ -6,7 +6,8 @@ add_library(fort
|
||||
|
||||
target_include_directories(fort
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
|
||||
)
|
||||
|
||||
set_target_properties(fort
|
||||
@ -30,14 +31,45 @@ endif()
|
||||
|
||||
include(GNUInstallDirs)
|
||||
install(
|
||||
TARGETS
|
||||
fort
|
||||
TARGETS fort
|
||||
EXPORT ${PROJECT_NAME}-targets
|
||||
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
)
|
||||
|
||||
install(FILES fort.h fort.hpp DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
install(
|
||||
FILES fort.h fort.hpp
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
)
|
||||
|
||||
configure_file(libfort.pc.in libfort.pc @ONLY)
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libfort.pc DESTINATION lib/pkgconfig)
|
||||
install(
|
||||
FILES ${CMAKE_CURRENT_BINARY_DIR}/libfort.pc
|
||||
DESTINATION lib/pkgconfig
|
||||
)
|
||||
|
||||
include(CMakePackageConfigHelpers)
|
||||
configure_package_config_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../cmake/${PROJECT_NAME}-config.cmake.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake
|
||||
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
|
||||
)
|
||||
write_basic_package_version_file(
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake
|
||||
COMPATIBILITY SameMajorVersion
|
||||
)
|
||||
install(
|
||||
FILES
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
|
||||
)
|
||||
|
||||
install(
|
||||
EXPORT ${PROJECT_NAME}-targets
|
||||
FILE ${PROJECT_NAME}-targets.cmake
|
||||
NAMESPACE ${PROJECT_NAME}::
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
|
||||
)
|
||||
|
||||
|
16
tests/package_tests/1-simple_table.cpp
Normal file
16
tests/package_tests/1-simple_table.cpp
Normal file
@ -0,0 +1,16 @@
|
||||
#include <iostream>
|
||||
|
||||
#include "fort.hpp"
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
fort::char_table table;
|
||||
table << fort::header
|
||||
<< "N" << "Driver" << "Time" << "Avg Speed" << fort::endr
|
||||
<< "1" << "Ricciardo" << "1:25.945" << "47.362" << fort::endr
|
||||
<< "2" << "Hamilton" << "1:26.373" << "35.02" << fort::endr
|
||||
<< "3" << "Verstappen" << "1:26.469" << "29.78" << fort::endr;
|
||||
|
||||
std::cout << table.to_string() << std::endl;
|
||||
}
|
23
tests/package_tests/CMakeLists.txt
Normal file
23
tests/package_tests/CMakeLists.txt
Normal file
@ -0,0 +1,23 @@
|
||||
cmake_minimum_required(VERSION 3.0)
|
||||
|
||||
find_package(libfort)
|
||||
|
||||
# Assert exports of libfort
|
||||
if (NOT libfort_FOUND)
|
||||
message(FATAL_ERROR "libfort was not found")
|
||||
endif()
|
||||
if (NOT TARGET libfort::fort)
|
||||
message(FATAL_ERROR "TARGET libfort::fort not found")
|
||||
endif()
|
||||
if (NOT DEFINED libfort_LIBRARIES)
|
||||
message(FATAL_ERROR "libfort_LIBRARIES are not defined")
|
||||
endif()
|
||||
if (NOT ${libfort_VERSION} EQUAL "0.4.0")
|
||||
message(FATAL_ERROR "libfort_VERSION is incorrect")
|
||||
endif()
|
||||
|
||||
add_executable(app
|
||||
1-simple_table.cpp)
|
||||
|
||||
target_link_libraries(app
|
||||
libfort::fort)
|
Loading…
Reference in New Issue
Block a user