]> andersk Git - libyaml.git/commit
Improve CMake build system
authorJean-Christophe Fillion-Robin <jchris.fillionr@kitware.com>
Thu, 30 Nov 2017 13:14:27 +0000 (08:14 -0500)
committerIan Stapleton Cordasco <graffatcolmingov@gmail.com>
Thu, 30 Nov 2017 13:14:27 +0000 (07:14 -0600)
commitfe3d086fa75a289d6e4085df6f855f4c88c8d7c2
tree02cc993cdd3d0322861daf4eb09ad636afeb4cd3
parent660242d6a418f0348c61057ed3052450527b3abf
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
12 files changed:
.gitignore
.travis.yml
CMakeLists.txt
Makefile.am
appveyor.yml
cmake/config.h.in [new file with mode: 0644]
configure.ac
tests/CMakeLists.txt [new file with mode: 0644]
tests/run-tests.sh
win32/Makefile.am [deleted file]
win32/config.h [deleted file]
yamlConfig.cmake.in [new file with mode: 0644]
This page took 1.241518 seconds and 5 git commands to generate.