cmake_minimum_required(VERSION 3.27) project($ENV{MAKE_NAME} C) set(CMAKE_C_STANDARD 17) add_executable($ENV{MAKE_NAME}) if(NOT "$ENV{MAKE_CFLAGS}" STREQUAL "") set_target_properties($ENV{MAKE_NAME} PROPERTIES COMPILE_FLAGS $ENV{MAKE_CFLAGS}) endif() if(NOT "$ENV{MAKE_C_SRCS}" STREQUAL "") string(REPLACE " " ";" SRCS_LIST $ENV{MAKE_C_SRCS}) foreach(X IN LISTS SRCS_LIST) message(STATUS "Added ${X} as a C project source file") target_sources($ENV{MAKE_NAME} PRIVATE ${X}) endforeach() endif() if(NOT "$ENV{MAKE_INCLUDE_DIRS}" STREQUAL "") string(REPLACE " " ";" INCLUDES_LIST $ENV{MAKE_INCLUDE_DIRS}) foreach(X IN LISTS INCLUDES_LIST) message(STATUS "Added ${X} to include path") target_include_directories($ENV{MAKE_NAME} PUBLIC ${X}) endforeach() endif() if(NOT "$ENV{MAKE_INCLUDE_SRCS}" STREQUAL "") string(REPLACE " " ";" SRCS_LIST $ENV{MAKE_INCLUDE_SRCS}) foreach(X IN LISTS SRCS_LIST) message(STATUS "Added ${X} as a C project header file") target_sources($ENV{MAKE_NAME} PRIVATE ${X}) endforeach() endif() if(NOT "$ENV{MAKE_SUBDIRECTORIES}" STREQUAL "") string(REPLACE " " ";" SUBDIR_LIST $ENV{MAKE_SUBDIRECTORIES}) foreach(X IN LISTS SUBDIR_LIST) message(STATUS "Added ${X} as a project subdirectory") add_subdirectory(${X}) target_link_libraries($ENV{MAKE_NAME} ${X}) endforeach() endif() install( TARGETS $ENV{MAKE_NAME} DESTINATION $ENV{MAKE_INSTALL_DIR} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE SETUID GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE )