diff --git a/.gitignore b/.gitignore index 5f144cb..2c5e85e 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,10 @@ *.x86_64 *.hex + +# Ignore the buildfiles that cmake generates in build/cmake/build +build/cmake/build + ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. # User-specific files diff --git a/build/cmake/CMakeLists.txt b/build/cmake/CMakeLists.txt new file mode 100644 index 0000000..107a8cb --- /dev/null +++ b/build/cmake/CMakeLists.txt @@ -0,0 +1,13 @@ +cmake_minimum_required(VERSION 3.22.2) + +project(nfd_build) + + +message("Building For ${CMAKE_SYSTEM_NAME}") + + +include(nfd.cmake) +include(test_opendialog.cmake) +include(test_opendialogmultiple.cmake) +include(test_pickfolder.cmake) +include(test_savedialog.cmake) diff --git a/build/cmake/nfd.cmake b/build/cmake/nfd.cmake new file mode 100644 index 0000000..0fff2a0 --- /dev/null +++ b/build/cmake/nfd.cmake @@ -0,0 +1,44 @@ +cmake_minimum_required(VERSION 3.10) + +# Project declaration +project(nfd) + +set(SOURCE_PATH ../../src) +# Set output directories for the build types +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ../../lib/${CMAKE_BUILD_TYPE}/) + +# Set source files + +if(CMAKE_SYSTEM_NAME STREQUAL "Windows") + set(SOURCE_FILES + ${SOURCE_PATH}/nfd_win.cpp + ${SOURCE_PATH}/nfd_common.c + ) +elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") + message("Use Zenity: ${USE_ZENITY}") + if(USE_ZENITY) + set(SOURCE_FILES + ../../src/nfd_zenity.c + ../../src/nfd_common.c + ) + else() + set(SOURCE_FILES + ../../src/nfd_gtk.c + ../../src/nfd_common.c + ) + endif() + +elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin") # macOS is detected as "Darwin" + set(SOURCE_FILES + ../../src/nfd_cocoa.m # Objective-C file for Cocoa + ../../src/nfd_common.c + ) +else() + message(FATAL_ERROR "Unsupported platform ${CMAKE_SYSTEM_NAME}") +endif() +# Include directories +include_directories( ${SOURCE_PATH}/include) + + +# Define the library target +add_library(nfd STATIC ${SOURCE_FILES}) diff --git a/build/cmake/test_opendialog.cmake b/build/cmake/test_opendialog.cmake new file mode 100644 index 0000000..87d3c7c --- /dev/null +++ b/build/cmake/test_opendialog.cmake @@ -0,0 +1,8 @@ +cmake_minimum_required(VERSION 3.22.2) + +project( test_opendialog) + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ../../bin/${CMAKE_BUILD_TYPE}/) + +add_executable(test_opendialog ../../test/test_opendialog.c) +target_link_libraries(test_opendialog nfd) \ No newline at end of file diff --git a/build/cmake/test_opendialogmultiple.cmake b/build/cmake/test_opendialogmultiple.cmake new file mode 100644 index 0000000..a3a8882 --- /dev/null +++ b/build/cmake/test_opendialogmultiple.cmake @@ -0,0 +1,8 @@ +cmake_minimum_required(VERSION 3.22.2) + +project( test_opendialogmultiple) + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ../../bin/${CMAKE_BUILD_TYPE}/) + +add_executable(test_opendialogmultiple ../../test/test_opendialogmultiple.c) +target_link_libraries(test_opendialogmultiple nfd) \ No newline at end of file diff --git a/build/cmake/test_pickfolder.cmake b/build/cmake/test_pickfolder.cmake new file mode 100644 index 0000000..1dced68 --- /dev/null +++ b/build/cmake/test_pickfolder.cmake @@ -0,0 +1,8 @@ +cmake_minimum_required(VERSION 3.22.2) + +project( test_pickfolder) + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ../../bin/${CMAKE_BUILD_TYPE}/) + +add_executable(test_pickfolder ../../test/test_pickfolder.c) +target_link_libraries(test_pickfolder nfd) \ No newline at end of file diff --git a/build/cmake/test_savedialog.cmake b/build/cmake/test_savedialog.cmake new file mode 100644 index 0000000..7f3c72e --- /dev/null +++ b/build/cmake/test_savedialog.cmake @@ -0,0 +1,8 @@ +cmake_minimum_required(VERSION 3.22.2) + +project( test_savedialog) + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ../../bin/${CMAKE_BUILD_TYPE}/) + +add_executable(test_savedialog ../../test/test_savedialog.c) +target_link_libraries(test_savedialog nfd) \ No newline at end of file