summaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorDaniil Rozanov <dev@rozanov.info>2025-03-15 18:03:23 +0400
committerDaniil Rozanov <dev@rozanov.info>2025-03-15 18:03:23 +0400
commit4a9ce6e2555dfaf9155fa279f25667350377f688 (patch)
tree11bc0ea3a7b1c0be2c47419b7058d46d16e5f9f4 /cmake
feat: chtype wrap
Diffstat (limited to 'cmake')
-rw-r--r--cmake/Util.cmake45
1 files changed, 45 insertions, 0 deletions
diff --git a/cmake/Util.cmake b/cmake/Util.cmake
new file mode 100644
index 0000000..659a793
--- /dev/null
+++ b/cmake/Util.cmake
@@ -0,0 +1,45 @@
+function( ncurses_cpp__setup_sample )
+ set(options)
+ set( oneValueArgs FOLDER NAME )
+ set( multiValueArgs HEADERS INCLUDE_DIRS LIBS SOURCES )
+ cmake_parse_arguments( TARGET "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
+
+
+ project( ${TARGET_NAME} LANGUAGES CXX )
+
+ add_executable( ${TARGET_NAME} ${TARGET_HEADERS} ${TARGET_SOURCES} )
+ target_include_directories( ${TARGET_NAME} PUBLIC ${CURSES_INCLUDE_DIR} )
+ target_link_libraries(${TARGET_NAME} PUBLIC ${CURSES_LIBRARY} NCurses::Cpp )
+
+ set_target_properties( ${TARGET_NAME} PROPERTIES CXX_STANDARD_REQUIRED ON )
+
+ if( TARGET_FOLDER )
+ set_target_properties( ${TARGET_NAME} PROPERTIES FOLDER "${TARGET_FOLDER}" )
+ endif()
+
+ if( TARGET_INCLUDE_DIRS )
+ target_include_directories( ${TARGET_NAME} PUBLIC ${TARGET_INCLUDE_DIRS} )
+ endif()
+
+ if( TARGET_LIBS )
+ target_link_libraries( ${TARGET_NAME} PRIVATE "${TARGET_LIBS}" )
+ endif()
+endfunction()
+
+
+function( ncurses_cpp__setup_sample_static )
+ set(options)
+ set(oneValueArgs FOLDER NAME )
+ set(multiValueArgs HEADERS INCLUDE_DIRS LIBS SOURCES )
+ cmake_parse_arguments( TARGET "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
+
+ find_package( Curses REQUIRED )
+
+
+ ncurses_cpp__setup_sample(
+ NAME ${TARGET_NAME}
+ FOLDER Samples
+ SOURCES ${TARGET_NAME}.cpp
+ LIBS ${CURSES_LIBRARY})
+
+endfunction()