Esempio n. 1
0
    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
        ]
Esempio n. 2
0
    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']), '')
Esempio n. 3
0
    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]), '')
Esempio n. 4
0
    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']),
                '')
Esempio n. 5
0
 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), '')