generateCMake function
void
generateCMake(})
Implementation
void generateCMake(String pluginName, List<String> moduleLibs, String nitroNativePath, {String baseDir = '.'}) {
final nitroValue = nitroNativePathExists(r'${CMAKE_CURRENT_SOURCE_DIR}/../../packages/nitro/src/native', p.join(baseDir, 'src'))
? r'${CMAKE_CURRENT_SOURCE_DIR}/../../packages/nitro/src/native'
: nitroNativePath.replaceAll(r'\', '/');
final sb = StringBuffer()
..writeln('cmake_minimum_required(VERSION 3.10)')
..writeln('project(${pluginName}_library VERSION 0.0.1 LANGUAGES C CXX)')
..writeln()
..writeln('set(NITRO_NATIVE "$nitroValue")')
..writeln()
..writeln('add_library($pluginName SHARED')
..writeln(' "$pluginName.cpp"')
..writeln(' "dart_api_dl.c"')
..writeln(')')
..writeln('target_include_directories($pluginName PRIVATE')
..writeln(' "\${CMAKE_CURRENT_SOURCE_DIR}"')
..writeln(' "\${CMAKE_CURRENT_SOURCE_DIR}/../lib/src/generated/cpp"')
..writeln(' "\${NITRO_NATIVE}"')
..writeln(')')
..writeln('target_compile_definitions($pluginName PUBLIC DART_SHARED_LIB)')
..writeln('if(ANDROID)')
..writeln(' target_link_libraries($pluginName PRIVATE android log)')
..writeln(' target_link_options($pluginName PRIVATE "-Wl,-z,max-page-size=16384")')
..writeln('endif()');
for (final lib in moduleLibs) {
if (lib != pluginName) sb.write(_cmakeModuleTarget(lib));
}
File(p.join(baseDir, 'src', 'CMakeLists.txt')).writeAsStringSync(sb.toString());
}