Skip to content

Commit

Permalink
adding CMakeLists.txt
Browse files Browse the repository at this point in the history
  • Loading branch information
afarbos committed May 13, 2016
1 parent db9cc96 commit 70ee8a4
Showing 1 changed file with 54 additions and 0 deletions.
54 changes: 54 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
cmake_minimum_required(VERSION 3.3.2)

project(LodePNG)

find_package(SDL)
include_directories(.)
file(GLOB_RECURSE SOURCES *.cpp)

set(LIBRARIES lodepng lodepng_util)
foreach(LIBRARY ${LIBRARIES})
add_library(${LIBRARY} ${LIBRARY}.cpp)
install(TARGETS ${LIBRARY}
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
endforeach()

string(LENGTH ${CMAKE_SOURCE_DIR} LENGTH_CMAKE_SOURCE_DIR)
set(SDL_DEPENDENT example_opengl example_sdl lodepng_benchmark)
set(UTIL_DEPENDENT lodepng_unittest pngdetail)
enable_testing()

foreach(SOURCE ${SOURCES})
string(SUBSTRING ${SOURCE} ${LENGTH_CMAKE_SOURCE_DIR} -1 EXECUTABLE_NAME)
string(REPLACE ".cpp" "" EXECUTABLE_NAME ${EXECUTABLE_NAME})
string(REPLACE "/examples/" "" EXECUTABLE_NAME ${EXECUTABLE_NAME})
string(REPLACE "/" "" EXECUTABLE_NAME ${EXECUTABLE_NAME})

list(FIND LIBRARIES ${EXECUTABLE_NAME} IS_LIB)
if (IS_LIB EQUAL -1)
set(LINK_LIBRARIES lodepng)
if (EXECUTABLE_NAME IN_LIST UTIL_DEPENDENT)
list(APPEND LINK_LIBRARIES lodepng_util)
endif()
if (EXECUTABLE_NAME IN_LIST SDL_DEPENDENT)
if (NOT SDL_FOUND)
continue()
endif()
list(APPEND LINK_LIBRARIES ${SDL_LIBRARY})
list(APPEND INCLUDE_DIRS ${SDL_INCLUDE_DIR})
endif()

add_executable(${EXECUTABLE_NAME} ${SOURCE})
if (INCLUDE_DIRS)
target_include_directories(${EXECUTABLE_NAME} PUBLIC ${INCLUDE_DIRS})
endif()
target_link_libraries(${EXECUTABLE_NAME} ${LINK_LIBRARIES})
add_test(NAME ${EXECUTABLE_NAME} COMMAND $<TARGET_FILE:${EXECUTABLE_NAME}>)
install(TARGETS ${EXECUTABLE_NAME} RUNTIME DESTINATION bin)
endif()
endforeach()

include(InstallRequiredSystemLibraries)
include(CPack)

0 comments on commit 70ee8a4

Please sign in to comment.