Skip to content

Commit

Permalink
Merge pull request #30 from lumynou5/chore/cmake
Browse files Browse the repository at this point in the history
Improve CMake
  • Loading branch information
Young-TW authored Jul 5, 2024
2 parents d1b6d3f + 927b0a4 commit ce1fed2
Showing 1 changed file with 23 additions and 22 deletions.
45 changes: 23 additions & 22 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,43 +1,44 @@
cmake_minimum_required(VERSION 3.27.0)
project(yush VERSION 0.6.4)

set(CMAKE_CXX_STANDARD 23)
include(CTest)

include_directories(./include)
set(CMAKE_CXX_STANDARD 23)

add_subdirectory(cxxopts)
add_subdirectory(fmt)

file(GLOB_RECURSE SRC_FILES src/*.cpp)
list(REMOVE_ITEM SRC_FILES ${CMAKE_SOURCE_DIR}/src/main.cpp)

add_library(${PROJECT_NAME}_lib STATIC ${SRC_FILES})
target_include_directories(${PROJECT_NAME}_lib PUBLIC include/)
target_link_libraries(${PROJECT_NAME}_lib PUBLIC cxxopts PUBLIC fmt::fmt)
target_compile_definitions(${PROJECT_NAME}_lib PUBLIC YUSH_VERSION="${PROJECT_VERSION}")
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
add_compile_definitions(YUSH_LINUX)
target_compile_definitions(${PROJECT_NAME}_lib PUBLIC YUSH_LINUX)
elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
add_compile_definitions(YUSH_MACOS)
target_compile_definitions(${PROJECT_NAME}_lib PUBLIC YUSH_MACOS)
elseif (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
add_compile_definitions(YUSH_FREEBSD)
target_compile_definitions(${PROJECT_NAME}_lib PUBLIC YUSH_FREEBSD)
elseif (CMAKE_SYSTEM_NAME STREQUAL "UNIX")
add_compile_definitions(YUSH_UNIX)
target_compile_definitions(${PROJECT_NAME}_lib PUBLIC YUSH_UNIX)
endif ()

file(GLOB_RECURSE SRC_FILES ./src/*.cpp)
list(REMOVE_ITEM SRC_FILES "src/main.cpp")

add_library(${PROJECT_NAME}_lib STATIC ${SRC_FILES})
target_link_libraries(${PROJECT_NAME}_lib cxxopts fmt::fmt)
target_compile_definitions(${PROJECT_NAME}_lib PUBLIC YUSH_VERSION="${PROJECT_VERSION}")

add_executable(${PROJECT_NAME} "src/main.cpp")
target_link_libraries(${PROJECT_NAME} ${PROJECT_NAME}_lib)
add_executable(${PROJECT_NAME} src/main.cpp)
target_link_libraries(${PROJECT_NAME} PRIVATE ${PROJECT_NAME}_lib)

install(TARGETS ${PROJECT_NAME})

enable_testing()

file(GLOB_RECURSE TEST_FILES ./test/*.cpp)
add_executable(${PROJECT_NAME}_test ${TEST_FILES})
find_package(GTest REQUIRED)
if (BUILD_TESTING)
find_package(GTest REQUIRED)
include(GoogleTest)

target_link_libraries(${PROJECT_NAME}_test GTest::gtest_main)
target_link_libraries(${PROJECT_NAME}_test ${PROJECT_NAME}_lib)
file(GLOB_RECURSE TEST_FILES test/*.cpp)

include(GoogleTest)
gtest_discover_tests(${PROJECT_NAME}_test)
add_executable(${PROJECT_NAME}_test ${TEST_FILES})
target_link_libraries(${PROJECT_NAME}_test PRIVATE GTest::gtest_main PRIVATE ${PROJECT_NAME}_lib)
gtest_discover_tests(${PROJECT_NAME}_test)
endif ()

0 comments on commit ce1fed2

Please sign in to comment.