60 lines
1.7 KiB
CMake
60 lines
1.7 KiB
CMake
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
|
|
)
|