From 161f2e52d86d9aa851f047d011ac9eccc0422c10 Mon Sep 17 00:00:00 2001 From: Patrick Wuttke Date: Thu, 3 Apr 2025 16:29:36 +0200 Subject: [PATCH] Give dependencies the option to add to CMAKE_PREFIX_PATH for compiling CMake dependencies against each other. --- addons/cmake_project.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/addons/cmake_project.py b/addons/cmake_project.py index 17c1aba..0a1b306 100644 --- a/addons/cmake_project.py +++ b/addons/cmake_project.py @@ -31,10 +31,18 @@ def _generate_cmake_cxx_flags(env, dependencies: 'list[dict]') -> str: def _get_cmake_cxx_standard(env: Environment) -> str: return env['CXX_STANDARD'][3:] # we use "C++XX", CMake just "XX" +def _get_cmake_prefix_path(dependencies: 'list[dict]') -> str: + parts = [] + for dependency in dependencies: + for path in dependency.get('CMAKE_PREFIX_PATH', []): + parts.append(path) + return cmd_quote(';'.join(parts)) + def _generate_cmake_args(env: Environment, dependencies: 'list[dict]') -> 'list[str]': args = [f'-DCMAKE_C_FLAGS={_generate_cmake_c_flags(env, dependencies)}', f'-DCMAKE_CXX_FLAGS={_generate_cmake_cxx_flags(env, dependencies)}', - f'-DCMAKE_CXX_STANDARD={_get_cmake_cxx_standard(env)}'] + f'-DCMAKE_CXX_STANDARD={_get_cmake_cxx_standard(env)}', + f'-DCMAKE_PREFIX_PATH={_get_cmake_prefix_path(dependencies)}'] for dependency in dependencies: for name, value in dependency.get('CMAKE_VARS', {}).items(): args.append(f'-D{name}={cmd_quote(value)}')