CMAKE_MINIMUM_REQUIRED(VERSION 3.0) PROJECT(FileSender) INCLUDE(CheckIncludeFiles) CHECK_INCLUDE_FILES(sys/sendfile.h HAVE_SYS_SENDFILE_H) IF(HAVE_SYS_SENDFILE_H) ADD_COMPILE_DEFINITIONS(HAVE_SYS_SENDFILE_H) ENDIF(HAVE_SYS_SENDFILE_H) INCLUDE(CheckFunctionExists) CHECK_FUNCTION_EXISTS(sendfile HAVE_SENDFILE) IF(HAVE_SENDFILE) ADD_COMPILE_DEFINITIONS(HAVE_SENDFILE) ENDIF(HAVE_SENDFILE) CHECK_FUNCTION_EXISTS(socket HAVE_SOCKET) IF(NOT HAVE_SOCKET) CHECK_LIBRARY_EXISTS(socket socket "" HAVE_SOCKET) ENDIF(NOT HAVE_SOCKET) INCLUDE(CheckStructHasMember) CHECK_STRUCT_HAS_MEMBER("struct sf_hdtr" hdr_cnt sys/socket.h HAVE_STRUCT_SF_HDTR_HDR_CNT) IF(HAVE_STRUCT_SF_HDTR_HDR_CNT) ADD_COMPILE_DEFINITIONS(HAVE_STRUCT_SF_HDTR_HDR_CNT) ENDIF(HAVE_STRUCT_SF_HDTR_HDR_CNT) ADD_EXECUTABLE(server server.c utils.c utils.h) ADD_EXECUTABLE(client client.c utils.c utils.h)