Files
SimpleFS/CMakeLists.txt
2025-11-06 10:49:44 +08:00

57 lines
1.6 KiB
CMake

cmake_minimum_required(VERSION 3.10)
project(SimpleFS CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
# Set include directory
include_directories(include)
# mkfs.simplefs executable
add_executable(mkfs.simplefs
tools/mkfs.cpp
src/disk_io.cpp
src/utils.cpp
)
target_link_libraries(mkfs.simplefs PRIVATE m)
# fsck.simplefs executable
add_executable(fsck.simplefs
tools/fsck.cpp
src/disk_io.cpp
src/utils.cpp
)
target_link_libraries(fsck.simplefs PRIVATE m)
# SimpleFS FUSE daemon
find_package(PkgConfig REQUIRED)
pkg_check_modules(FUSE REQUIRED fuse)
include_directories(${FUSE_INCLUDE_DIRS})
link_directories(${FUSE_LIBRARY_DIRS})
add_executable(simplefs
src/main.cpp
src/fuse_ops.cpp
src/disk_io.cpp
src/metadata.cpp
src/utils.cpp
)
target_link_libraries(simplefs PRIVATE ${FUSE_LIBRARIES})
# Add required FUSE definitions specifically for simplefs target
target_compile_definitions(simplefs PRIVATE _FILE_OFFSET_BITS=64 FUSE_USE_VERSION=29)
# Enable warnings
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wpedantic -g")
endif()
# Remove global add_definitions for FUSE if they were here, now target-specific
message(STATUS "Project SimpleFS configured (mkfs.simplefs only)")
message(STATUS "CXX Standard: ${CMAKE_CXX_STANDARD}")
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
message(STATUS "Compiler: ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_VERSION}")
message(STATUS "Source directory: ${CMAKE_SOURCE_DIR}")
message(STATUS "Binary directory: ${CMAKE_BINARY_DIR}")