Skip to content

Commit 3e1ca55

Browse files
authored
Modernize and simplify CMakeLists.txt (#13)
1 parent 13af7c1 commit 3e1ca55

File tree

2 files changed

+8
-789
lines changed

2 files changed

+8
-789
lines changed

CMakeLists.txt

Lines changed: 8 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@ if(NOT userver_FOUND) # Fallback to subdirectory usage
1010

1111
# Compatibility mode: some systems don't support these features
1212
set(USERVER_FEATURE_CRYPTOPP_BLAKE2 OFF CACHE BOOL "" FORCE)
13-
set(USERVER_FEATURE_GRPC_CHANNELZ OFF CACHE BOOL "" FORCE)
14-
set(USERVER_FEATURE_REDIS_HI_MALLOC ON CACHE BOOL "" FORCE)
1513

1614
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/userver)
1715
message(STATUS "Using userver framework from third_party/userver")
@@ -28,93 +26,14 @@ set(CPP_JWT_BUILD_TESTS OFF)
2826
set(CPP_JWT_BUILD_EXAMPLES OFF)
2927
add_subdirectory(third_party/cpp-jwt)
3028

31-
32-
option(JWT_BUILD_EXAMPLES OFF)
33-
3429
# Common sources
35-
add_library(${PROJECT_NAME}_objs OBJECT
36-
src/cache/articles_cache.hpp
37-
src/cache/articles_cache.cpp
38-
src/cache/comments_cache.cpp
39-
src/cache/comments_cache.hpp
40-
src/handlers/common.cpp
41-
src/handlers/common.hpp
42-
src/handlers/profiles/profiles.cpp
43-
src/handlers/profiles/profiles.hpp
44-
src/handlers/users/users.cpp
45-
src/handlers/users/users.hpp
46-
src/handlers/tags/tags.cpp
47-
src/handlers/tags/tags.hpp
48-
src/handlers/users/users_login.cpp
49-
src/handlers/users/users_login.hpp
50-
src/handlers/users/user_get.cpp
51-
src/handlers/users/user_get.hpp
52-
src/handlers/users/user_put.cpp
53-
src/handlers/users/user_put.hpp
54-
src/handlers/profiles/profiles_follow.cpp
55-
src/handlers/profiles/profiles_follow.hpp
56-
src/handlers/profiles/profiles_follow_delete.cpp
57-
src/handlers/profiles/profiles_follow_delete.hpp
58-
src/handlers/articles/articles_slug_delete.cpp
59-
src/handlers/articles/articles_slug_delete.hpp
60-
src/handlers/articles/articles_slug_get.cpp
61-
src/handlers/articles/articles_slug_get.hpp
62-
src/handlers/articles/articles_slug_put.cpp
63-
src/handlers/articles/articles_slug_put.hpp
64-
src/handlers/articles/articles_get.cpp
65-
src/handlers/articles/articles_get.hpp
66-
src/handlers/articles/articles_post.cpp
67-
src/handlers/articles/articles_post.hpp
68-
src/handlers/articles/feed_articles.hpp
69-
src/handlers/articles/feed_articles.cpp
70-
src/handlers/articles/articles_favorite.cpp
71-
src/handlers/articles/articles_favorite.hpp
72-
src/handlers/comments/comment_delete.cpp
73-
src/handlers/comments/comment_delete.hpp
74-
src/handlers/comments/comment_post.cpp
75-
src/handlers/comments/comment_post.hpp
76-
src/handlers/comments/comments_get.cpp
77-
src/handlers/comments/comments_get.hpp
78-
src/handlers/auth/auth_bearer.hpp
79-
src/handlers/auth/auth_bearer.cpp
80-
src/dto/article.cpp
81-
src/dto/article.hpp
82-
src/dto/comment.hpp
83-
src/dto/comment.cpp
84-
src/db/sql.hpp
85-
src/models/user.hpp
86-
src/models/user.cpp
87-
src/models/comment.hpp
88-
src/models/comment.cpp
89-
src/models/article.hpp
90-
src/models/article.cpp
91-
src/models/profile.hpp
92-
src/validators/user_validators.hpp
93-
src/validators/user_validators.cpp
94-
src/validators/length_validator.hpp
95-
src/validators/length_validator.cpp
96-
src/utils/random.hpp
97-
src/utils/random.cpp
98-
src/utils/errors.hpp
99-
src/utils/errors.cpp
100-
src/utils/make_error.hpp
101-
src/utils/make_error.cpp
102-
src/utils/jwt.hpp
103-
src/utils/jwt.cpp
104-
src/utils/slugify.hpp
105-
src/utils/slugify.cpp
106-
src/handlers/articles/articles_unfavorite.cpp
107-
src/handlers/articles/articles_unfavorite.hpp
108-
src/dto/filter.hpp
109-
src/dto/filter.cpp
110-
src/validators/validators.cpp
111-
src/validators/article_validators.cpp
112-
src/validators/article_validators.hpp
113-
114-
)
30+
file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.[hc]pp)
31+
file(GLOB_RECURSE UNIT_TEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*_test.cpp)
32+
list(REMOVE_ITEM SOURCES ${UNIT_TEST_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp)
11533

34+
add_library(${PROJECT_NAME}_objs OBJECT ${SOURCES})
11635
include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src)
117-
target_link_libraries(${PROJECT_NAME}_objs PUBLIC userver::core userver::postgresql)
36+
target_link_libraries(${PROJECT_NAME}_objs PUBLIC userver::postgresql)
11837

11938
file(GLOB_RECURSE SCHEMAS ${CMAKE_CURRENT_SOURCE_DIR}/docs/*.yaml)
12039
userver_target_generate_chaotic(${PROJECT_NAME}-chgen
@@ -128,25 +47,17 @@ userver_target_generate_chaotic(${PROJECT_NAME}-chgen
12847
${CMAKE_CURRENT_SOURCE_DIR}
12948
)
13049
target_link_libraries(${PROJECT_NAME}_objs PUBLIC ${PROJECT_NAME}-chgen)
131-
132-
target_include_directories(${PROJECT_NAME}_objs PUBLIC cpp-jwt)
13350
target_link_libraries(${PROJECT_NAME}_objs PUBLIC cpp-jwt)
13451

135-
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake")
136-
find_package(ICU 4.4 COMPONENTS io i18n REQUIRED)
137-
target_include_directories(${PROJECT_NAME}_objs PUBLIC ${ICU_INCLUDE_DIRS})
138-
target_link_libraries(${PROJECT_NAME}_objs PUBLIC ${ICU_LIBRARIES})
52+
find_package(ICU COMPONENTS uc i18n REQUIRED)
53+
target_link_libraries(${PROJECT_NAME}_objs PUBLIC ICU::uc ICU::i18n)
13954

14055
# The Service
14156
add_executable(${PROJECT_NAME} src/main.cpp)
14257
target_link_libraries(${PROJECT_NAME} PRIVATE ${PROJECT_NAME}_objs)
14358

14459
# Unit Tests
145-
add_executable(${PROJECT_NAME}_unittest
146-
src/utils/slugify_test.cpp
147-
src/validators/validator_test.cpp
148-
)
149-
60+
add_executable(${PROJECT_NAME}_unittest ${UNIT_TEST_SOURCES})
15061
target_link_libraries(${PROJECT_NAME}_unittest PRIVATE ${PROJECT_NAME}_objs userver::utest)
15162
add_google_tests(${PROJECT_NAME}_unittest)
15263

@@ -164,8 +75,6 @@ if(DEFINED ENV{PREFIX})
16475
set(CMAKE_INSTALL_PREFIX ${PREFIX_PATH})
16576
endif()
16677

167-
set(CONFIG_JWT ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_SYSCONFDIR}/${PROJECT_NAME}/jwt_config.json)
168-
16978
file(GLOB CONFIGS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/configs/*.yaml ${CMAKE_CURRENT_SOURCE_DIR}/configs/*.json)
17079

17180
install(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${PROJECT_NAME})

0 commit comments

Comments
 (0)