diff --git a/CMakeLists.txt b/CMakeLists.txt index bbe0198..9a89158 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,10 +1,15 @@ project(clew) +option( BUILD_TESTS "Build test program." ON ) +option( BUILD_SHARED_LIBRARY "Build shared library." ON ) +option( BUILD_STATIC_LIBRARY "Build static library." ON ) + cmake_minimum_required (VERSION 2.6) if (NOT CMAKE_VERSION VERSION_LESS 2.8.4) cmake_policy (SET CMP0017 NEW) endif() +include(GNUInstallDirs) include(CMakeParseArguments) set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS TRUE) @@ -18,14 +23,27 @@ endif() include_directories(include) -add_library(clew src/clew.c include/clew.h) +if(BUILD_STATIC_LIBRARY) +add_library(clew_static STATIC src/clew.c include/clew.h) +set_target_properties(clew_static PROPERTIES OUTPUT_NAME clew) +install(TARGETS clew_static + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries) +endif() -add_executable(testclew clewTest/clewTest.cpp include/clew.h) -target_link_libraries(testclew clew ${CMAKE_DL_LIBS}) +if(BUILD_SHARED_LIBRARY) +add_library(clew_shared SHARED src/clew.c include/clew.h) +set_property(TARGET clew_shared PROPERTY POSITION_INDEPENDENT_CODE 1) +set_target_properties(clew_shared PROPERTIES OUTPUT_NAME clew) +install(TARGETS clew_shared + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries) +endif() -install(TARGETS clew - LIBRARY DESTINATION lib COMPONENT libraries - ARCHIVE DESTINATION lib/static COMPONENT libraries) +if(BUILD_TESTS) +add_executable(testclew clewTest/clewTest.cpp include/clew.h) +target_link_libraries(testclew clew_static ${CMAKE_DL_LIBS}) +endif() INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/clew.h DESTINATION include/CL)