From d33798214da9cde1dc3274eb8d804b212e0af7ca Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Thu, 3 Jan 2019 21:57:47 -0600 Subject: [PATCH] Cleanups of cmake build use support. --- .travis.yml | 9 ++++----- CMakeLists.txt | 28 ++++++++++++++++++++-------- test/test_cmake/CMakeLists.txt | 30 +++++++++++++++++++----------- test/test_cmake/main.cpp | 20 ++++++++++++++++---- 4 files changed, 59 insertions(+), 28 deletions(-) diff --git a/.travis.yml b/.travis.yml index de16d11..f904bbb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -48,11 +48,9 @@ matrix: exclude: - env: TRAVIS_EMPTY_JOB_WORKAROUND=true include: - # cmake self-test - - env: TEST_CMAKE=TRUE #Only for easier identification in travis web gui - os: linux - - # skip all the unneeded steps from the normal unit test jobs + # Check CMake project use support. + - env: TEST_CMAKE + # Skip all the unneeded steps from the normal unit test jobs install: true before_script: true before_cache: true @@ -60,6 +58,7 @@ matrix: after_success: true after_failure: true after_script: true + # Build CMake simple test project that uses Predef. script: - mkdir __build__ && cd __build__ - cmake ../test/test_cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 1714a43..72747cf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,9 +1,12 @@ -# Copyright 2018 Mike Dev +# Copyright Mike Dev 2018 +# Copyright Rene Rivera 2018 # Distributed under the Boost Software License, Version 1.0. -# See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt -# -# NOTE: CMake support for Boost.Predef is currently experimental at best -# and the interface is likely to change in the future +# See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt + +# NOTE: +# CMake support for Boost.Predef is currently experimental at best and the +# interface is likely to change in the future # # This file provides mininmal cmake support (no unit-tests, # no installation) for integration into a "host" cmake project @@ -14,13 +17,22 @@ # on this library. I.e: # # target_link_libraries( PUBLIC Boost::predef ) -# -cmake_minimum_required( VERSION 3.5 ) +# Only need the basic minimum of project, add_library, and +# target_include_directories commands. +cmake_minimum_required( VERSION 3.0 ) + +# Don't set VERSION, as that's a pita to keep up to date with the version +# header. And don't set LANGUAGES as we are multi-language and header +# only, so it's irrelevant. project( BoostPredef ) +# Simple INTERFACE, and header only, library target. add_library( boost_predef INTERFACE ) + +# The only usage requirement is include dir for consumers. target_include_directories( boost_predef INTERFACE include ) +# Add an alias to be compatible with consumers that may have used the +# FindBoost script. add_library( Boost::predef ALIAS boost_predef ) - diff --git a/test/test_cmake/CMakeLists.txt b/test/test_cmake/CMakeLists.txt index b2cd0b5..5908c4e 100644 --- a/test/test_cmake/CMakeLists.txt +++ b/test/test_cmake/CMakeLists.txt @@ -1,21 +1,29 @@ -# Copyright 2018 Mike Dev +# Copyright Mike Dev 2018 +# Copyright Rene Rivera 2018 # Distributed under the Boost Software License, Version 1.0. -# See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt -# -# NOTE: This does NOT run the unit tests for Boost.Predef. -# It only tests, if the CMakeLists.txt file in predef's -# root directory works as expected (i.e. it provides the -# target Boost::predef which in turn provides the -# correct include directory ) +# See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt -cmake_minimum_required( VERSION 3.5 ) +# NOTE: +# This does NOT run the unit tests for Boost.Predef. +# It only tests, if the CMakeLists.txt file in predef's +# root directory works as expected (i.e. it provides the +# target Boost::predef which in turn provides the +# correct include directory ) + +# We have very simple cmake requirements we we still require the new style +# declarative targets. +cmake_minimum_required( VERSION 3.0 ) project( BoostPredefCMakeSelfTest ) -# Process cmake file at root of library and use ${CMAKE_CURRENT_BINARY_DIR}/libs/boost_predef as workspace +# Process cmake file at root of library and use +# ${CMAKE_CURRENT_BINARY_DIR}/libs/boost_predef as workspace add_subdirectory( ../.. ${CMAKE_CURRENT_BINARY_DIR}/libs/boost_predef ) +# The executable just includes a predef header to verify that it's used. add_executable( boost_predef_cmake_test_prj main.cpp ) +# The executable needs to "use" the Predef "library" to get the usage +# requirements added to the executable build. target_link_libraries( boost_predef_cmake_test_prj Boost::predef ) - diff --git a/test/test_cmake/main.cpp b/test/test_cmake/main.cpp index 4507ab7..5dd875f 100644 --- a/test/test_cmake/main.cpp +++ b/test/test_cmake/main.cpp @@ -1,7 +1,19 @@ -// Dummy executable, just to make sure -// that we can find the Boost.predef header files +/* +Copyright Mike Dev 2018 +Copyright 2018 Rene Rivera +Distributed under the Boost Software License, Version 1.0. +See accompanying file LICENSE_1_0.txt or copy at +http://www.boost.org/LICENSE_1_0.txt +*/ + +/* +Dummy executable, just to make sure that we can find the Boost.predef header +files. +*/ + #include -int main() { - +int main() +{ + return 0; }