apply CMake instead of GNU Make

pull/70/head
김동한 8 years ago
parent 2bfa4153db
commit d47474f2d5
  1. 29
      CMakeLists.txt
  2. 1
      makefile
  3. 52
      test.cmake.in
  4. 28
      version.cmake.in

@ -0,0 +1,29 @@
cmake_minimum_required (VERSION 2.8)
project (libparson)
include (version.cmake.in)
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -std=c89 -pedantic-errors")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")
include_directories (${PROJECT_SOURCE_DIR})
add_library (parson SHARED parson.c)
set_target_properties (parson PROPERTIES
SOVERSION ${so_version}
VERSION ${PARSON_VERSION}
)
install (FILES parson.h DESTINATION include/parson)
install (TARGETS parson DESTINATION lib)
add_custom_target (uninstall
COMMAND ${CMAKE_COMMAND} -E remove
`cat ${PROJECT_BINARY_DIR}/install_manifest.txt`
)
if (${CMAKE_BUILD_TYPE} MATCHES Debug)
include (test.cmake.in)
endif ()

@ -0,0 +1 @@
$(error DEPRECATED: Use CMake instead of GNU Make)

@ -0,0 +1,52 @@
enable_testing ()
add_executable (test-c-standalone EXCLUDE_FROM_ALL tests.c parson.c)
add_executable (test-c-linked EXCLUDE_FROM_ALL tests.c)
target_link_libraries (test-c-linked parson)
add_custom_command (
OUTPUT tests.cxx
COMMAND ${CMAKE_COMMAND} -E create_symlink
${PROJECT_SOURCE_DIR}/tests
${PROJECT_BINARY_DIR}/tests
COMMAND ${CMAKE_COMMAND} -E create_symlink
${PROJECT_SOURCE_DIR}/tests.c
${PROJECT_BINARY_DIR}/tests.cxx
)
add_executable (test-cxx-standalone EXCLUDE_FROM_ALL tests.cxx parson.c)
add_executable (test-cxx-linked EXCLUDE_FROM_ALL tests.cxx)
target_link_libraries (test-cxx-linked parson)
add_test (test-c-standalone-build
${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}
--target test-c-standalone
)
add_test (test-cxx-standalone-build
${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}
--target test-cxx-standalone
)
add_test (test-c-linked-build
${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}
--target test-c-linked
)
add_test (test-cxx-linked-build
${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}
--target test-cxx-linked
)
add_test (test-c-standalone-run test-c-standalone)
add_test (test-cxx-standalone-run test-cxx-standalone)
add_test (test-c-linked-run test-c-linked)
add_test (test-cxx-linked-run test-cxx-linked)
add_custom_command (TARGET parson
POST_BUILD
COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}
--target test
)

@ -0,0 +1,28 @@
# from pacakge.json
set (PARSON_VERSION 0.0.0 CACHE STRING "set library version")
if (PARSON_VERSION STREQUAL 0.0.0)
execute_process (
COMMAND git rev-parse --short HEAD
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
OUTPUT_VARIABLE git_rev
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_VARIABLE git_err
)
if (git_err)
message (FATAL_ERROR
"${git_err}"
"*** Please define PARSON_VERSION ***\n"
)
endif ()
set (PARSON_VERSION ${PARSON_VERSION}.${git_rev})
endif ()
string (REPLACE "." ";" version_list ${PARSON_VERSION})
list (GET version_list 0 so_version)
message (STATUS "set SOVERSION to ${so_version}")
message (STATUS "set VERSION to ${PARSON_VERSION}")
Loading…
Cancel
Save