autocmak.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import os
  2. installed = [
  3. {
  4. "name":"fmt"
  5. },
  6. {
  7. "name":"zlmediakit"
  8. },
  9. {
  10. "name":"Boost",
  11. "child":[
  12. {
  13. "name":"json"
  14. }
  15. ]
  16. },
  17. ]
  18. cmake_lines = []
  19. cmake_finds = []
  20. cmake_links = []
  21. cmake_lines.append(f'cmake_minimum_required(VERSION 4.0)\n')
  22. cmake_lines.append(f'project(jtjai_media)\n')
  23. cmake_lines.append(f'set(CMAKE_CXX_STANDARD 11)\n')
  24. for lib in installed:
  25. childs = lib.get("child", [])
  26. if len(childs) > 0:
  27. child_names = [child["name"] for child in childs]
  28. cmake_finds.append(
  29. f'find_package({lib["name"]} COMPONENTS {" ".join(child_names)} REQUIRED)\n'
  30. )
  31. link_components = " ".join(f'{lib["name"]}::{name}' for name in child_names)
  32. cmake_links.append(f'target_link_libraries(jtjai_media PRIVATE {link_components})\n')
  33. else:
  34. cmake_finds.append(f'find_package({lib["name"]} CONFIG REQUIRED)\n')
  35. cmake_links.append(f'target_link_libraries(jtjai_media PRIVATE {lib["name"]}::{lib["name"]})\n')
  36. for line in cmake_finds:
  37. cmake_lines.append(line)
  38. cmake_lines.append('add_executable(jtjai_media main.cpp)\n')
  39. for line in cmake_links:
  40. cmake_lines.append(line)
  41. with open('CMakeLists.txt','a') as f:
  42. f.__del__()
  43. with open('CMakeLists.txt','w') as f:
  44. f.writelines(cmake_lines)