xmake.lua 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package("ctrl-c")
  2. set_homepage("https://github.com/evgenykislov/ctrl-c")
  3. set_description("Crossplatform code to handle Ctrl+C signal")
  4. set_license("MIT")
  5. add_urls("https://github.com/evgenykislov/ctrl-c.git")
  6. add_versions("2023.09.02", "98b39d689ecb1a7193a3647c9a7d58a521892f9b")
  7. on_install("windows", "macosx", "linux", "mingw", "android", "msys", "iphoneos", "cross", function (package)
  8. io.writefile("xmake.lua", [[
  9. add_rules("mode.debug", "mode.release")
  10. target("ctrl-c")
  11. set_kind("$(kind)")
  12. add_headerfiles("src/(ctrl-c.h)")
  13. add_files("src/ctrl-c.cpp")
  14. set_languages("c++11")
  15. if is_plat("windows") then
  16. add_defines("_WIN32")
  17. end
  18. if is_plat("linux") then
  19. add_defines("__linux__")
  20. end
  21. if is_plat("macosx") then
  22. add_defines("__APPLE__")
  23. end
  24. ]])
  25. local configs = {}
  26. import("package.tools.xmake").install(package, configs)
  27. end)
  28. on_test(function (package)
  29. assert(package:check_cxxsnippets({test = [[
  30. #include <ctrl-c.h>
  31. void test() {
  32. std::function<bool(enum CtrlCLibrary::CtrlSignal)> _exit = [](CtrlCLibrary::CtrlSignal signal) -> bool
  33. {
  34. return true;
  35. };
  36. CtrlCLibrary::SetCtrlCHandler(_exit);
  37. }
  38. ]]}, {configs = {languages = "cxx11"}}))
  39. end)