diff --git a/Nim/CMakeLists.txt b/Nim/CMakeLists.txt index 2077b44..d61139f 100644 --- a/Nim/CMakeLists.txt +++ b/Nim/CMakeLists.txt @@ -2,5 +2,4 @@ cmake_minimum_required(VERSION 3.0) list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Nim) include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Nim/UseNim.cmake) find_package(Nim) -add_nim_executable(TARGET Main SOURCES main.nim) -file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/main.qml DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) \ No newline at end of file +add_subdirectory(Examples) \ No newline at end of file diff --git a/Nim/Examples/CMakeLists.txt b/Nim/Examples/CMakeLists.txt new file mode 100644 index 0000000..8502d8d --- /dev/null +++ b/Nim/Examples/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(Simple) \ No newline at end of file diff --git a/Nim/Examples/Simple/CMakeLists.txt b/Nim/Examples/Simple/CMakeLists.txt new file mode 100644 index 0000000..79e03af --- /dev/null +++ b/Nim/Examples/Simple/CMakeLists.txt @@ -0,0 +1,2 @@ +file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/main.qml DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) +add_nim_executable(TARGET Main SOURCES main.nim PATHS ../../NimQml) \ No newline at end of file diff --git a/Nim/main.nim b/Nim/Examples/Simple/main.nim similarity index 100% rename from Nim/main.nim rename to Nim/Examples/Simple/main.nim diff --git a/Nim/main.qml b/Nim/Examples/Simple/main.qml similarity index 100% rename from Nim/main.qml rename to Nim/Examples/Simple/main.qml diff --git a/Nim/NimQml.nim b/Nim/NimQml/NimQml.nim similarity index 100% rename from Nim/NimQml.nim rename to Nim/NimQml/NimQml.nim diff --git a/Nim/NimQml/NimQml.nimble b/Nim/NimQml/NimQml.nimble new file mode 100644 index 0000000..3a334b1 --- /dev/null +++ b/Nim/NimQml/NimQml.nimble @@ -0,0 +1,9 @@ +[Package] +name = "NimQml" +version = "0.01" +author = "Filippo Cucchetto" +description = "QML bindings for Nimrod" +license = "GPLv3" + +[Deps] +Requires: "nimrod >= 0.10.2" diff --git a/Nim/NimQmlTypes.nim b/Nim/NimQml/NimQmlTypes.nim similarity index 100% rename from Nim/NimQmlTypes.nim rename to Nim/NimQml/NimQmlTypes.nim diff --git a/Nim/cmake/Nim/UseNim.cmake b/Nim/cmake/Nim/UseNim.cmake index fad8f8e..be42551 100644 --- a/Nim/cmake/Nim/UseNim.cmake +++ b/Nim/cmake/Nim/UseNim.cmake @@ -1,24 +1,32 @@ include(CMakeParseArguments) function(add_nim_executable ) - cmake_parse_arguments(ARGS "" "TARGET" "SOURCES" ${ARGN}) + set(options ) + set(oneValueArgs TARGET) + set(multiValueArgs SOURCES PATHS) + cmake_parse_arguments(ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + + # collect set of input source files + set(in_files "") + foreach(src ${ARGS_SOURCES} ${ARGS_UNPARSED_ARGUMENTS}) + list(APPEND in_files "${CMAKE_CURRENT_SOURCE_DIR}/${src}") + endforeach(src ${ARGS_SOURCES} ${ARGS_UNPARSED_ARGUMENTS}) - # collect set of input source files - set(in_files "") - foreach(src ${ARGS_SOURCES} ${ARGS_UNPARSED_ARGUMENTS}) - list(APPEND in_files "${CMAKE_CURRENT_SOURCE_DIR}/${src}") - endforeach(src ${ARGS_SOURCES} ${ARGS_UNPARSED_ARGUMENTS}) + set(in_paths "") + foreach(path ${ARGS_PATHS} ${ARGS_UNPARSED_ARGUMENTS}) + list(APPEND in_paths "--path:${CMAKE_CURRENT_SOURCE_DIR}/${path}") + endforeach(path ${ARGS_PATHS} ${ARGS_UNPARSED_ARGUMENTS}) + + # set the target binary and nim cache directory + set(nim_target "${CMAKE_CURRENT_BINARY_DIR}/${ARGS_TARGET}") + set(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/nimcache") - # set the target binary and nim cache directory - set(nim_target "${CMAKE_CURRENT_BINARY_DIR}/${ARGS_TARGET}") - set(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/nimcache") - - # add target to trigger the nimrod compiler - add_custom_target( - nim ALL - COMMAND - ${NIM_EXECUTABLE} "c" "--nimcache:" ${DIRECTORY} "--out:" ${nim_target} ${in_files} - DEPENDS - ${in_files} - ) + # add target to trigger the nimrod compiler + add_custom_target( + nim ALL + COMMAND + ${NIM_EXECUTABLE} "c" ${in_paths} "--nimcache:" ${DIRECTORY} "--out:" ${nim_target} ${in_files} + DEPENDS + ${in_files} + ) endfunction(add_nim_executable) \ No newline at end of file