Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 79 additions & 32 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,51 +1,98 @@
# CMAkeLists.txt file for mumpi project
cmake_minimum_required(VERSION 3.0.0)

# Options. Turn on with 'cmake -Dvarname=ON'.
option(test "Build all tests." OFF) # makes boolean 'test' available
set(CMAKE_BUILD_TYPE Debug)
cmake_minimum_required(VERSION 3.28.0)

# Project
project(klv)

# Compiler settings
if (CMAKE_VERSION VERSION_LESS "3.1")
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set (CMAKE_CXX_FLAGS "--std=gnu++11 ${CMAKE_CXX_FLAGS}")
endif ()
else ()
set (CMAKE_CXX_STANDARD 11)
endif ()
set(CMAKE_EXPORT_COMPILE_COMMANDS 1)
project(klv
VERSION 0.0.1
DESCRIPTION "libklv"
LANGUAGES CXX C
)

# If not set, the latest supported standard for your compiler is used
# You can later set fine-grained standards for each target using `target_compile_features`
# Note: linking together projects compiled with different C++ standards may work, but
# it is not recommended because of possible issues with ABI
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_C_STANDARD 23)

# Strongly encouraged to enable this globally to avoid conflicts between
# -Wpedantic being enabled and -std=c++23 and -std=gnu++23 for example
# when compiling with PCH enabled
set(CMAKE_CXX_EXTENSIONS ON )
set(CMAKE_CXX_STANDARD_REQUIRED ON )
set(CMAKE_C_EXTENSIONS OFF)
set(CMAKE_C_STANDARD_REQUIRED ON )

set(CMAKE_EXPORT_COMPILE_COMMANDS ON )

# Set compiler options using this form since one of the dependency is
# using an old version of CMake and is not compatibile with expression generator.
if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0 -g3 -ggdb")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3")
elseif(CMAKE_C_COMPILER_ID STREQUAL "Clang" OR CMAKE_C_COMPILER_ID STREQUAL "AppleClang")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0 -g")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3")
elseif(CMAKE_C_COMPILER_ID STREQUAL "MSVC")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /Od /Zi")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /O2")
endif()

set(POSITION_INDEPENDENT_CODE ON)

find_package(PkgConfig REQUIRED)
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
message(STATUS "${PROJECT_SOURCE_DIR}")

# Options. Turn on with 'cmake -Dvarname=ON'.
option(LIBKLV_ENABLE_STATIC "Enable static library. Default is dynamic." ON )
option(LIBKLV_ENABLE_DEBUG "Enable/Disable debug information." OFF)
option(LIBKLV_BUILD_TESTS "Build all tests." OFF)

# Check for packages
INCLUDE(FindPkgConfig)
pkg_check_modules(LOG4CPP "log4cpp")

# INCLUDES
include_directories(${LOG4CPP_INCLUDE_DIRS})
include_directories(include)
include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/include/ )

# SOURCES
#Can manually add the sources using the set command as follows:
#set(SOURCES src/mainapp.cpp src/Student.cpp)
file(GLOB SOURCES "src/*.cpp")

add_library(klv SHARED ${SOURCES})
if (LIBKLV_ENABLE_STATIC)
add_library(klv STATIC ${SOURCES})
else(LIBKLV_ENABLE_STATIC)
add_library(klv SHARED ${SOURCES})
endif(LIBKLV_ENABLE_STATIC)

# LINKING
# target_link_libraries(libklv z) # zlib
# target_link_libraries(libklv m) # math
target_link_libraries(klv ${LOG4CPP_LIBRARIES})
set_property(TARGET klv PROPERTY POSITION_INDEPENDENT_CODE ON)

if (LIBKLV_ENABLE_DEBUG)
target_compile_definitions(klv PRIVATE ENABLE_KLV_DEBUG=1 )
else(LIBKLV_ENABLE_DEBUG)
target_compile_definitions(klv PRIVATE ENABLE_KLV_DEBUG=0 )
endif(LIBKLV_ENABLE_DEBUG)

if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
set(LIBKLV_WARNINGS -Wall -Wextra -Wpedantic -Wshadow -Wconversion -Wunused )
elseif(MSVC)
set(LIBKLV_WARNINGS /W4 /permissive )
endif()

target_compile_options(klv PRIVATE ${LIBKLV_WARNINGS})

# Rule to install the library target
install(TARGETS klv LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}/")

# TESTING
# TESTING

enable_testing()
add_subdirectory("${PROJECT_SOURCE_DIR}/deps/googletest")
if(LIBKLV_BUILD_TESTS)
enable_testing()
add_subdirectory("${PROJECT_SOURCE_DIR}/deps/googletest")

file(GLOB TESTS "test/*.cpp")
file(GLOB TESTS "test/*.cpp")

add_executable(runUnitTests ${TESTS})
target_link_libraries(runUnitTests gtest gtest_main gmock klv)
add_test(NAME libklv-test COMMAND runUnitTests)
add_executable(runUnitTests ${TESTS})
target_link_libraries(runUnitTests gtest gtest_main gmock klv)
add_test(NAME libklv-test COMMAND runUnitTests)
endif(LIBKLV_BUILD_TESTS)
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ from MPEG2-TS video.

## Dependencies

* Compiler that supports C++14
* Compiler that supports C++23
* [Google Test](https://github.com/google/googletest)
* [CMake](https://cmake.org/)

Expand Down
125 changes: 0 additions & 125 deletions include/Klv.h

This file was deleted.

Loading