def set_path_and_name_from_node(context, node_name, value, path_property, name_property): """ Common routine for evaluating path and name from node text """ file_path_value = value.strip() if not file_path_value: return file_path_value = replace_vs_vars_with_cmake_vars( context, file_path_value) file_path_value = set_native_slash(file_path_value) path, name = get_dir_name_with_vars(context, file_path_value) result_name = replace_vs_vars_with_cmake_vars(context, name) result_path = cleaning_output(context, path) result_path = check_for_relative_in_path(context, result_path) message(context, '{} directory = {}'.format(node_name, result_path), '') message(context, '{} name = {}'.format(node_name, result_name), '') context.settings[context.current_setting][path_property] = [ result_path ] context.settings[context.current_setting][name_property] = [ result_name ]
def set_additional_include_directories(aid_text, setting, context): """ Return additional include directories of given context :param aid_text: path to sources :type aid_text: str :param setting: current setting (Debug|x64, Release|Win32,...) :type setting: str :param context: current context :type context: Context :return: include directories of context, separated by semicolons :rtype: str """ if not aid_text: return working_path = os.path.dirname(context.vcxproj_path) inc_dir = resolve_path_variables_of_vs(context, aid_text) inc_dir = inc_dir.replace('%(AdditionalIncludeDirectories)', '') inc_dirs = context.settings[setting]['inc_dirs'] dirs_raw = [] for i in inc_dir.split(';'): if i: dirs_raw.append(i) i = normalize_path(context, working_path, i) i = replace_vs_vars_with_cmake_vars(context, i) inc_dirs.append(i) context.settings[setting]['inc_dirs_list'].extend(dirs_raw) if inc_dirs: message( context, 'Include Directories : {0}'.format( context.settings[setting]['inc_dirs']), '')
def set_defines(context, defines_node): """ Defines preprocessor definitions in current settings """ for define in defines_node.text.split(";"): define = define.strip() if define != '%(PreprocessorDefinitions)': define = replace_vs_vars_with_cmake_vars(context, define) define = define.replace('\\', '\\\\') define = define.replace('"', '\\"') context.settings[context.current_setting][defines].append( define) message( context, 'PreprocessorDefinitions : {}'.format( context.settings[context.current_setting][defines]), '')
def set_output_file_impl(context, output_file_node_text): """ Common routine for evaluating path and name of output file """ if output_file_node_text: # next 2 properties are special. check Default.cmake for understanding if not context.settings[ context.current_setting]['OUTPUT_DIRECTORY']: context.settings[context.current_setting]['OUTPUT_DIRECTORY'] = \ ['${OUTPUT_DIRECTORY}'] if not context.settings[context.current_setting]['TARGET_NAME']: context.settings[context.current_setting]['TARGET_NAME'] = [ '${TARGET_NAME}' ] output_path = context.settings[ context.current_setting]['OUTPUT_DIRECTORY'][0] output_file = cleaning_output(context, output_file_node_text) output_file = output_file.replace('${OUTPUT_DIRECTORY}', output_path) output_path = os.path.dirname(output_file) name, _ = os.path.splitext(os.path.basename(output_file)) name = name.replace( '${TARGET_NAME}', context.settings[context.current_setting]['TARGET_NAME'][0]) context.settings[context.current_setting]['TARGET_NAME'] = \ [replace_vs_vars_with_cmake_vars(context, name)] output_path = check_for_relative_in_path(context, output_path) context.settings[context.current_setting]['OUTPUT_DIRECTORY'] = [ output_path ] message( context, 'Output File : dir="{}" name="{}"'.format( context.settings[ context.current_setting]['OUTPUT_DIRECTORY'][0], context.settings[context.current_setting]['TARGET_NAME']), '')
def set_target_name(context, target_name_value): """ Evaluates target name and sets it into project context """ context.settings[context.current_setting]['TARGET_NAME'] = [ replace_vs_vars_with_cmake_vars(context, target_name_value) ] message(context, 'TargetName = {}'.format(target_name_value), '')