mirror of
https://github.com/CLIUtils/CLI11.git
synced 2025-04-29 12:13:52 +00:00
Adding support for conan.io (#83)
* Adding fix for #75, rename requires to needs * Removing check for install commands (should still be run in subproject) * Adding conan build * Some small changes to CMake * Adding nicer Travis code * Adding package test, find works now
This commit is contained in:
parent
5186158442
commit
f089255ad0
@ -5,12 +5,17 @@ branches:
|
||||
install:
|
||||
- set PATH=C:\Python36;%PATH%
|
||||
- cmake --version
|
||||
- pip install conan
|
||||
- conan user
|
||||
- conan --version
|
||||
|
||||
build_script:
|
||||
- mkdir build
|
||||
- cd build
|
||||
- cmake .. -DCLI_SINGLE_FILE_TESTS=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_GENERATOR="Visual Studio 14 2015"
|
||||
- cmake --build .
|
||||
- cd ..
|
||||
- conan create . CLIUtils/CLI11
|
||||
|
||||
test_script:
|
||||
- ctest --output-on-failure -C Debug
|
||||
|
@ -1,6 +1,7 @@
|
||||
set -evx
|
||||
|
||||
cd ${TRAVIS_BUILD_DIR}
|
||||
mkdir -p build
|
||||
cd build
|
||||
cmake .. -DCLI_SINGLE_FILE_TESTS=OFF -DCLI_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=Coverage
|
||||
cmake --build . -- -j2
|
||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,6 +1,7 @@
|
||||
a.out*
|
||||
*.swp
|
||||
/*build*
|
||||
/test_package/build
|
||||
/Makefile
|
||||
/CMakeFiles/*
|
||||
/cmake_install.cmake
|
||||
|
52
.travis.yml
52
.travis.yml
@ -30,8 +30,11 @@ matrix:
|
||||
- clang-tidy-3.9
|
||||
env:
|
||||
- COMPILER=3.9
|
||||
- CHECK_STYLE=yes
|
||||
- CLI_CXX_STD=14
|
||||
script:
|
||||
- cd "${TRAVIS_BUILD_DIR}"
|
||||
- scripts/check_style.sh
|
||||
- .ci/check_tidy.sh
|
||||
- compiler: clang
|
||||
addons:
|
||||
apt:
|
||||
@ -39,8 +42,13 @@ matrix:
|
||||
- clang-3.5
|
||||
env:
|
||||
- COMPILER=3.5
|
||||
- DEPLOY_MAT=yes
|
||||
- DOXYFILE=$TRAVIS_BUILD_DIR/docs/Doxyfile
|
||||
after_success:
|
||||
- |
|
||||
if [ "${TRAVIS_BRANCH}" == "master" ] && [ "${TRAVIS_PULL_REQUEST}" == "false" ]
|
||||
then
|
||||
echo "Updating docs" && cd $TRAVIS_BUILD_DIR && .ci/build_docs.sh
|
||||
fi
|
||||
- compiler: gcc
|
||||
addons:
|
||||
apt:
|
||||
@ -52,8 +60,12 @@ matrix:
|
||||
- lcov
|
||||
env:
|
||||
- COMPILER=6
|
||||
- COVERALLS=yes
|
||||
- CLI_CXX_STD=14
|
||||
before_install:
|
||||
- DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
|
||||
- cd $TRAVIS_BUILD_DIR
|
||||
- . .ci/build_lcov.sh
|
||||
- .ci/run_codecov.sh
|
||||
- compiler: gcc
|
||||
addons:
|
||||
apt:
|
||||
@ -61,38 +73,34 @@ matrix:
|
||||
- g++-4.7
|
||||
env:
|
||||
- COMPILER=4.7
|
||||
- os: osx
|
||||
before_install:
|
||||
- python -m pip install --user conan
|
||||
- conan user
|
||||
after_success:
|
||||
- conan create . CLIUtils/CLI11
|
||||
- os: osx
|
||||
compiler: clang
|
||||
before_install:
|
||||
- brew update
|
||||
- echo 'brew "python"' > Brewfile
|
||||
- echo 'brew "conan"' >> Brewfile
|
||||
- brew bundle
|
||||
- python -m ensurepip --user
|
||||
- conan user
|
||||
after_success:
|
||||
- conan create . CLIUtils/CLI11
|
||||
install:
|
||||
- python -c 'import sys; print(sys.version_info[:])'
|
||||
- DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then cd $TRAVIS_BUILD_DIR && . .ci/prepare_altern.sh ; fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ] ; then cd $TRAVIS_BUILD_DIR && . .ci/build_cmake.sh ; fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ] ; then cd $TRAVIS_BUILD_DIR && . .ci/build_doxygen.sh ; fi
|
||||
- if [ -n "$COVERALLS" ] ; then cd $TRAVIS_BUILD_DIR && . .ci/build_lcov.sh ; fi
|
||||
- cd "${DEPS_DIR}"
|
||||
- if [ "$(python -c 'import sys; print(sys.version_info[0])')" = "2" ] ; then python -m pip install --user pathlib ; fi
|
||||
- cmake --version
|
||||
script:
|
||||
- cd "${TRAVIS_BUILD_DIR}"
|
||||
- |
|
||||
if [ -n "$CHECK_STYLE" ]
|
||||
then
|
||||
scripts/check_style.sh
|
||||
.ci/check_tidy.sh
|
||||
else
|
||||
.ci/travis.sh
|
||||
fi
|
||||
after_success:
|
||||
- if [ -n "$COVERALLS" ] ; then cd $TRAVIS_BUILD_DIR && .ci/run_codecov.sh ; fi
|
||||
- echo "${TRAVIS_BRANCH}"
|
||||
- echo "${TRAVIS_PULL_REQUEST}"
|
||||
- |
|
||||
if [ "${TRAVIS_BRANCH}" == "master" ] && [ "${TRAVIS_PULL_REQUEST}" == "false" ] && [ -n "$DEPLOY_MAT" ]
|
||||
then
|
||||
echo "Updating docs" && cd $TRAVIS_BUILD_DIR && .ci/build_docs.sh
|
||||
fi
|
||||
- .ci/travis.sh
|
||||
deploy:
|
||||
provider: releases
|
||||
api_key:
|
||||
|
@ -1,8 +1,8 @@
|
||||
cmake_minimum_required(VERSION 3.4 FATAL_ERROR)
|
||||
|
||||
project(CLI11 CXX)
|
||||
project(CLI11 LANGUAGES CXX)
|
||||
|
||||
SET(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
|
||||
SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
|
||||
|
||||
set(CLI_CXX_STD "11" CACHE STRING "The CMake standard to require")
|
||||
|
||||
@ -51,10 +51,43 @@ endif()
|
||||
|
||||
file(GLOB CLI_headers "${CMAKE_CURRENT_SOURCE_DIR}/include/CLI/*")
|
||||
# To see in IDE, must be listed for target
|
||||
|
||||
add_library(CLI11 INTERFACE)
|
||||
target_include_directories(CLI11 INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/include")
|
||||
|
||||
# Duplicated because CMake adds the current source dir if you don't.
|
||||
target_include_directories(CLI11 INTERFACE
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
||||
$<INSTALL_INTERFACE:include>)
|
||||
|
||||
# Make add_subdirectory work like find_package
|
||||
add_library(CLI11::CLI11 ALIAS CLI11)
|
||||
|
||||
# This folder should be installed
|
||||
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/CLI DESTINATION include)
|
||||
|
||||
# Use find_package on the installed package
|
||||
# Since we have no custom code, we can directly write this
|
||||
# to Config.cmake (otherwise we'd have a custom config and would
|
||||
# import Targets.cmake
|
||||
|
||||
# Make an export target
|
||||
install(TARGETS CLI11
|
||||
EXPORT CLI11Targets)
|
||||
|
||||
# Install the export target as a file
|
||||
install(EXPORT CLI11Targets
|
||||
FILE CLI11Config.cmake
|
||||
NAMESPACE CLI11::
|
||||
DESTINATION lib/cmake/CLI11)
|
||||
|
||||
# Use find_package on the installed package
|
||||
export(TARGETS CLI11
|
||||
NAMESPACE CLI11::
|
||||
FILE CLI11Targets.cmake)
|
||||
|
||||
# Register in the user cmake package registry
|
||||
export(PACKAGE CLI11)
|
||||
|
||||
# Single file test
|
||||
find_package(PythonInterp)
|
||||
if(CUR_PROJ AND PYTHONINTERP_FOUND)
|
||||
|
@ -15,7 +15,7 @@ download_project(PROJ googletest
|
||||
)
|
||||
|
||||
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
|
||||
add_subdirectory(${googletest_SOURCE_DIR} ${googletest_SOURCE_DIR})
|
||||
add_subdirectory(${googletest_SOURCE_DIR} ${googletest_SOURCE_DIR} EXCLUDE_FROM_ALL)
|
||||
|
||||
if (CMAKE_CONFIGURATION_TYPES)
|
||||
add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND}
|
||||
|
23
conanfile.py
Normal file
23
conanfile.py
Normal file
@ -0,0 +1,23 @@
|
||||
from conans import ConanFile, CMake
|
||||
|
||||
class HelloConan(ConanFile):
|
||||
name = "CLI11"
|
||||
version = "1.3.0"
|
||||
url = "https://github.com/CLIUtils/CLI11"
|
||||
settings = "os", "compiler", "arch", "build_type"
|
||||
license = "BSD 3 clause"
|
||||
description = "Command Line Interface toolkit for C++11"
|
||||
|
||||
exports_sources = "LICENCE", "include/*", "cmake/*", "CMakeLists.txt", "tests/*"
|
||||
|
||||
def build(self): # this is not building a library, just tests
|
||||
cmake = CMake(self)
|
||||
cmake.definitions["CLI_EXAMPLES"] = "OFF"
|
||||
cmake.definitions["CLI_SINGLE_FILE"] = "OFF"
|
||||
cmake.configure()
|
||||
cmake.build()
|
||||
cmake.test()
|
||||
cmake.install()
|
||||
|
||||
def package_id(self):
|
||||
self.info.header_only()
|
16
test_package/CMakeLists.txt
Normal file
16
test_package/CMakeLists.txt
Normal file
@ -0,0 +1,16 @@
|
||||
project(PackageTest CXX)
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
|
||||
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
|
||||
conan_basic_setup()
|
||||
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
message(STATUS "${CMAKE_PREFIX_PATH}")
|
||||
|
||||
find_package(CLI11 CONFIG REQUIRED)
|
||||
|
||||
add_executable(example example.cpp)
|
||||
target_link_libraries(example CLI11::CLI11)
|
19
test_package/conanfile.py
Normal file
19
test_package/conanfile.py
Normal file
@ -0,0 +1,19 @@
|
||||
from conans import ConanFile, CMake
|
||||
import os
|
||||
|
||||
class HelloTestConan(ConanFile):
|
||||
settings = "os", "compiler", "build_type", "arch"
|
||||
generators = "cmake"
|
||||
|
||||
def build(self):
|
||||
cmake = CMake(self)
|
||||
cmake.configure()
|
||||
cmake.build()
|
||||
|
||||
def imports(self):
|
||||
self.copy("*.dll", dst="bin", src="bin")
|
||||
self.copy("*.dylib*", dst="bin", src="lib")
|
||||
|
||||
def test(self):
|
||||
os.chdir("bin")
|
||||
self.run(".%sexample" % os.sep)
|
20
test_package/example.cpp
Normal file
20
test_package/example.cpp
Normal file
@ -0,0 +1,20 @@
|
||||
// This file is a "Hello, world!" CLI11 program
|
||||
|
||||
#include "CLI/CLI.hpp"
|
||||
|
||||
#include <iostream>
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
|
||||
CLI::App app("Some nice discription");
|
||||
|
||||
int x = 0;
|
||||
app.add_option("-x", x, "an integer value", true /* show default */);
|
||||
|
||||
bool flag;
|
||||
app.add_flag("-f,--flag", flag, "a flag option");
|
||||
|
||||
CLI11_PARSE(app, argc, argv);
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user