mirror of
https://github.com/CLIUtils/CLI11.git
synced 2025-04-29 20:23:55 +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:
|
install:
|
||||||
- set PATH=C:\Python36;%PATH%
|
- set PATH=C:\Python36;%PATH%
|
||||||
- cmake --version
|
- cmake --version
|
||||||
|
- pip install conan
|
||||||
|
- conan user
|
||||||
|
- conan --version
|
||||||
|
|
||||||
build_script:
|
build_script:
|
||||||
- mkdir build
|
- mkdir build
|
||||||
- cd build
|
- cd build
|
||||||
- cmake .. -DCLI_SINGLE_FILE_TESTS=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_GENERATOR="Visual Studio 14 2015"
|
- cmake .. -DCLI_SINGLE_FILE_TESTS=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_GENERATOR="Visual Studio 14 2015"
|
||||||
- cmake --build .
|
- cmake --build .
|
||||||
|
- cd ..
|
||||||
|
- conan create . CLIUtils/CLI11
|
||||||
|
|
||||||
test_script:
|
test_script:
|
||||||
- ctest --output-on-failure -C Debug
|
- ctest --output-on-failure -C Debug
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
set -evx
|
set -evx
|
||||||
|
|
||||||
cd ${TRAVIS_BUILD_DIR}
|
cd ${TRAVIS_BUILD_DIR}
|
||||||
|
mkdir -p build
|
||||||
cd build
|
cd build
|
||||||
cmake .. -DCLI_SINGLE_FILE_TESTS=OFF -DCLI_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=Coverage
|
cmake .. -DCLI_SINGLE_FILE_TESTS=OFF -DCLI_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=Coverage
|
||||||
cmake --build . -- -j2
|
cmake --build . -- -j2
|
||||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,6 +1,7 @@
|
|||||||
a.out*
|
a.out*
|
||||||
*.swp
|
*.swp
|
||||||
/*build*
|
/*build*
|
||||||
|
/test_package/build
|
||||||
/Makefile
|
/Makefile
|
||||||
/CMakeFiles/*
|
/CMakeFiles/*
|
||||||
/cmake_install.cmake
|
/cmake_install.cmake
|
||||||
|
52
.travis.yml
52
.travis.yml
@ -30,8 +30,11 @@ matrix:
|
|||||||
- clang-tidy-3.9
|
- clang-tidy-3.9
|
||||||
env:
|
env:
|
||||||
- COMPILER=3.9
|
- COMPILER=3.9
|
||||||
- CHECK_STYLE=yes
|
|
||||||
- CLI_CXX_STD=14
|
- CLI_CXX_STD=14
|
||||||
|
script:
|
||||||
|
- cd "${TRAVIS_BUILD_DIR}"
|
||||||
|
- scripts/check_style.sh
|
||||||
|
- .ci/check_tidy.sh
|
||||||
- compiler: clang
|
- compiler: clang
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
@ -39,8 +42,13 @@ matrix:
|
|||||||
- clang-3.5
|
- clang-3.5
|
||||||
env:
|
env:
|
||||||
- COMPILER=3.5
|
- COMPILER=3.5
|
||||||
- DEPLOY_MAT=yes
|
|
||||||
- DOXYFILE=$TRAVIS_BUILD_DIR/docs/Doxyfile
|
- 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
|
- compiler: gcc
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
@ -52,8 +60,12 @@ matrix:
|
|||||||
- lcov
|
- lcov
|
||||||
env:
|
env:
|
||||||
- COMPILER=6
|
- COMPILER=6
|
||||||
- COVERALLS=yes
|
|
||||||
- CLI_CXX_STD=14
|
- 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
|
- compiler: gcc
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
@ -61,38 +73,34 @@ matrix:
|
|||||||
- g++-4.7
|
- g++-4.7
|
||||||
env:
|
env:
|
||||||
- COMPILER=4.7
|
- COMPILER=4.7
|
||||||
- os: osx
|
|
||||||
before_install:
|
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
|
- python -m ensurepip --user
|
||||||
|
- conan user
|
||||||
|
after_success:
|
||||||
|
- conan create . CLIUtils/CLI11
|
||||||
install:
|
install:
|
||||||
- python -c 'import sys; print(sys.version_info[:])'
|
- python -c 'import sys; print(sys.version_info[:])'
|
||||||
- DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
|
- 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/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_cmake.sh ; fi
|
||||||
- if [ "$TRAVIS_OS_NAME" = "linux" ] ; then cd $TRAVIS_BUILD_DIR && . .ci/build_doxygen.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}"
|
- cd "${DEPS_DIR}"
|
||||||
- if [ "$(python -c 'import sys; print(sys.version_info[0])')" = "2" ] ; then python -m pip install --user pathlib ; fi
|
- if [ "$(python -c 'import sys; print(sys.version_info[0])')" = "2" ] ; then python -m pip install --user pathlib ; fi
|
||||||
- cmake --version
|
- cmake --version
|
||||||
script:
|
script:
|
||||||
- cd "${TRAVIS_BUILD_DIR}"
|
- cd "${TRAVIS_BUILD_DIR}"
|
||||||
- |
|
- .ci/travis.sh
|
||||||
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
|
|
||||||
deploy:
|
deploy:
|
||||||
provider: releases
|
provider: releases
|
||||||
api_key:
|
api_key:
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
cmake_minimum_required(VERSION 3.4 FATAL_ERROR)
|
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")
|
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/*")
|
file(GLOB CLI_headers "${CMAKE_CURRENT_SOURCE_DIR}/include/CLI/*")
|
||||||
# To see in IDE, must be listed for target
|
# To see in IDE, must be listed for target
|
||||||
|
|
||||||
add_library(CLI11 INTERFACE)
|
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)
|
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
|
# Single file test
|
||||||
find_package(PythonInterp)
|
find_package(PythonInterp)
|
||||||
if(CUR_PROJ AND PYTHONINTERP_FOUND)
|
if(CUR_PROJ AND PYTHONINTERP_FOUND)
|
||||||
|
@ -15,7 +15,7 @@ download_project(PROJ googletest
|
|||||||
)
|
)
|
||||||
|
|
||||||
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
|
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)
|
if (CMAKE_CONFIGURATION_TYPES)
|
||||||
add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND}
|
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