diff --git a/CMakeLists.txt b/CMakeLists.txt index 9b3c41b..f596e02 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,33 +2,32 @@ cmake_minimum_required(VERSION 3.21) project(cyberiadamlpp VERSION 1.0) -find_package(LibXml2 REQUIRED) -if(!LibXml2_FOUND) - message(FATAL_ERROR "Cannot find libxml2 library") -endif() +include(cmake/CPM.cmake) -set(cyberiadaml_DIR /usr/lib/cmake) -find_package(cyberiadaml REQUIRED) -if(!cyberiadaml_FOUND) - message(FATAL_ERROR "Cannot find libcyberiadaml library") -endif() +CPMAddPackage( + NAME libcyberiadaml + VERSION 1.0.0 + URL https://git.gogacoder.com/gogacoder/libcyberiadaml/archive/v1.0.0.zip +) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) -add_library(cyberiadamlpp SHARED cyberiadamlpp.cpp) +add_library(cyberiadamlpp SHARED src/cyberiadamlpp.cpp) target_include_directories(cyberiadamlpp PUBLIC - $ + $ $ - "${cyberiadaml_INCLUDE_DIRS}") - + "${cyberiadaml_INCLUDE_DIRS}" +) + target_link_directories(cyberiadamlpp PUBLIC "${cyberiadaml_LIBRARY}") -target_link_libraries(cyberiadamlpp PUBLIC "${cyberiadaml_LIBRARIES}") +target_link_libraries(cyberiadamlpp PUBLIC "${cyberiadaml_LIBRARIES}" cyberiadaml) -add_executable(cyberiadapp main.cpp) +add_executable(cyberiadapp src/main.cpp) target_include_directories(cyberiadapp PUBLIC $ - $) + $ +) target_link_directories(cyberiadapp PUBLIC "${PROJECT_BINARY_DIR}") target_link_libraries(cyberiadapp PUBLIC cyberiadamlpp) @@ -45,12 +44,12 @@ foreach(source_path ${files}) add_custom_command(TARGET "${target_name}" POST_BUILD COMMAND copy "${PROJECT_BINARY_DIR}/${target_name}" "${PROJECT_BINARY_DIR}/tests/" - ) + ) else() add_custom_command(TARGET "${target_name}" POST_BUILD COMMAND ln -sf "${PROJECT_BINARY_DIR}/${target_name}" "${PROJECT_BINARY_DIR}/tests/" - ) + ) endif() endforeach() @@ -63,7 +62,8 @@ foreach(f ${test_files}) file(COPY_FILE "${f}" "${PROJECT_BINARY_DIR}/tests/${fname}" - ONLY_IF_DIFFERENT) + ONLY_IF_DIFFERENT + ) endforeach() file(COPY_FILE @@ -78,8 +78,10 @@ install(EXPORT cyberiadamlpp DESTINATION lib/cmake) configure_file( ${PROJECT_SOURCE_DIR}/cyberiadamlpp-config.cmake.in - ${PROJECT_BINARY_DIR}/cyberiadamlpp-config.cmake @ONLY) + ${PROJECT_BINARY_DIR}/cyberiadamlpp-config.cmake @ONLY +) install(FILES ${PROJECT_BINARY_DIR}/cyberiadamlpp-config.cmake - DESTINATION lib/cmake) + DESTINATION lib/cmake +) diff --git a/cyberiadamlpp.cpp b/src/cyberiadamlpp.cpp similarity index 99% rename from cyberiadamlpp.cpp rename to src/cyberiadamlpp.cpp index e442d87..00f725a 100644 --- a/cyberiadamlpp.cpp +++ b/src/cyberiadamlpp.cpp @@ -21,6 +21,7 @@ * ----------------------------------------------------------------------------- */ #include +#include #include #include "cyberiadamlpp.h" @@ -2077,7 +2078,7 @@ void Document::load(const String& path, DocumentFormat f) int res = cyberiada_init_sm_document(&doc); CYB_ASSERT(res == CYBERIADA_NO_ERROR); - res = cyberiada_read_sm_document(&doc, path.c_str(), CyberiadaXMLFormat(f)); + res = cyberiada_read_sm_document(&doc, path.c_str(), CyberiadaXMLFormat(f), CYBERIADA_NO_ERROR); if (res != CYBERIADA_NO_ERROR) { cyberiada_cleanup_sm_document(&doc); CYB_CHECK_RESULT(res); @@ -2344,7 +2345,7 @@ void Document::save(const String& path, DocumentFormat f) const throw AssertException("Internal save error: " + e.str()); } - res = cyberiada_write_sm_document(&doc, path.c_str(), CyberiadaXMLFormat(f)); + res = cyberiada_write_sm_document(&doc, path.c_str(), CyberiadaXMLFormat(f), CYBERIADA_NO_ERROR); if (res != CYBERIADA_NO_ERROR) { cyberiada_cleanup_sm_document(&doc); CYB_CHECK_RESULT(res); diff --git a/cyberiadamlpp.h b/src/cyberiadamlpp.h similarity index 100% rename from cyberiadamlpp.h rename to src/cyberiadamlpp.h diff --git a/main.cpp b/src/main.cpp similarity index 100% rename from main.cpp rename to src/main.cpp