Projects
Eulaceura:Factory
libyaml
_service:obs_scm:backport-Improve-CMake-build-s...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:obs_scm:backport-Improve-CMake-build-system.patch of Package libyaml
From fe3d086fa75a289d6e4085df6f855f4c88c8d7c2 Mon Sep 17 00:00:00 2001 From: Jean-Christophe Fillion-Robin <jchris.fillionr@kitware.com> Date: Thu, 30 Nov 2017 08:14:27 -0500 Subject: [PATCH] Improve CMake build system New build options ----------------- * Add option BUILD_TESTING by default ON See https://cmake.org/cmake/help/v2.8.12/cmake.html#module:CTest * Simplify library type selection using standard option BUILD_SHARED_LIBS See https://cmake.org/cmake/help/v3.0/variable/BUILD_SHARED_LIBS.html yamlConfig.cmake ---------------- * Generate and install yamlConfig.cmake, yamlConfigVersion.cmake and yamlTargets.cmake * Bump CMake version and explicitly associate include dirs with targets See https://cmake.org/cmake/help/v3.0/manual/cmake-buildsystem.7.html#include-directories-and-usage-requirements * Ensure building against libyaml using "find_package(yaml)" uses expected compile options: Set HAVE_CONFIG_H as private compile option, YAML_DECLARE_STATIC as public Testing ------- * Build all examples from "tests" directory CMake Best practices -------------------- * configure "config.h" based on version info found in CMakeLists.txt * Ensure buildsystem re-generation listing sources (best-practice) It is not recommended to use GLOB to collect a list of source files from the source tree. If no CMakeLists.txt file changes when a source is added or removed then the generated build system cannot know when to ask CMake to regenerate. See https://cmake.org/cmake/help/v3.8/command/file.html Compilation warnings -------------------- * Set _CRT_SECURE_NO_WARNINGS if building using VisualStudio This will avoid warnings like this one: ``` C:\projects\libyaml\tests\run-emitter.c(268): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. ``` Continuous Integration ---------------------- * travis: Install CMake >= 3.x using scikit-ci-addons * Add comments to appveyor.yml and run-tests.sh --- cmake/config.h.in | 4 ++ tests/CMakeLists.txt | 27 +++++++ yamlConfig.cmake.in | 16 +++++ 3 files changed, 47 insertions(+), 0 deletions(-) create mode 100644 cmake/config.h.in create mode 100644 tests/CMakeLists.txt create mode 100644 yamlConfig.cmake.in diff --git a/cmake/config.h.in b/cmake/config.h.in new file mode 100644 index 0000000..51e2e24 --- /dev/null +++ b/cmake/config.h.in @@ -0,0 +1,4 @@ +#define YAML_VERSION_MAJOR @YAML_VERSION_MAJOR@ +#define YAML_VERSION_MINOR @YAML_VERSION_MINOR@ +#define YAML_VERSION_PATCH @YAML_VERSION_PATCH@ +#define YAML_VERSION_STRING "@YAML_VERSION_STRING@" diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt new file mode 100644 index 0000000..d10b424 --- /dev/null +++ b/tests/CMakeLists.txt @@ -0,0 +1,27 @@ + +function(add_yaml_executable name) + add_executable(${name} ${name}.c) + target_link_libraries(${name} yaml) +endfunction() + +foreach(name IN ITEMS + example-deconstructor + example-deconstructor-alt + example-reformatter + example-reformatter-alt + run-dumper + run-emitter + run-emitter-test-suite + run-loader + run-parser + run-parser-test-suite + run-scanner + test-reader + test-version + ) + add_yaml_executable(${name}) +endforeach() + +add_test(NAME version COMMAND test-version) +add_test(NAME reader COMMAND test-reader) + diff --git a/yamlConfig.cmake.in b/yamlConfig.cmake.in new file mode 100644 index 0000000..dd3f8ee --- /dev/null +++ b/yamlConfig.cmake.in @@ -0,0 +1,16 @@ +# Config file for the yaml library. +# +# It defines the following variables: +# yaml_LIBRARIES - libraries to link against + +@PACKAGE_INIT@ + +set_and_check(yaml_TARGETS "@PACKAGE_CONFIG_DIR_CONFIG@/yamlTargets.cmake") + +if(NOT yaml_TARGETS_IMPORTED) + set(yaml_TARGETS_IMPORTED 1) + include(${yaml_TARGETS}) +endif() + +set(yaml_LIBRARIES yaml) + -- 2.27.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2