В этом примере показано, как зарегистрировать и использовать цепочку инструментов для создания исполняемого файла. В этом примере используется компилятор Intel ®. Однако концепции и интерфейс программирования применимы и к другим инструментальным цепям. После регистрации цепочки инструментов можно настроить модель таким образом, чтобы генератор кода использовал ее для создания исполняемого файла модели.
Инструментальная цепочка - это набор инструментов, необходимых для компиляции и связывания кода для указанной платформы. Инструментальная цепочка состоит из нескольких инструментов, таких как компилятор, компоновщик и архиватор. Можно настроить инструменты в цепочке инструментов с несколькими опциями и сгруппировать спецификации инструментов в типы конфигураций.
Следующий код создает папку в текущей рабочей папке (pwd). Новая папка содержит файлы для этого примера. Если вы не хотите влиять на текущую папку или не можете создать файлы в этой папке, измените рабочую папку перед вызовом команды.
copyfile(fullfile(matlabroot,'toolbox','rtw','rtwdemos','toolchain_demo'),'toolchain_demo','f') cd toolchain_demo
Откройте окно rtwdemo_counter модель. По умолчанию эта модель настроена на использование конфигурации «Общий целевой объект в реальном времени» (GRT) и подхода «Схема инструментов» для создания исполняемого файла. Возможности, продемонстрированные в этом примере, доступны для моделей, настроенных на использование подхода с использованием цепочки инструментов.
model = 'rtwdemo_counter';
open_system(model)

Откройте диалоговое окно «Параметры конфигурации». Выберите «Создание кода». Раздел «Параметры цепочки инструментов» содержит параметры для настройки цепочки инструментов. В раскрывающемся списке «Схема инструментов» выберите цепочку инструментов, установленную в системе разработки, для создания исполняемого файла из кода, созданного в модели.
По умолчанию выбрана конфигурация построения более быстрых запусков. Щелкните Показать параметры (Show settings), чтобы увидеть флаги цепочки инструментов, заданные для создания созданного кода. Выберите конфигурацию сборки на основе текущей цели разработки приложений.
Закройте диалоговое окно «Параметры конфигурации».
В этом примере показано, как можно зарегистрировать пользовательскую цепочку инструментов и добавить ее в качестве выбираемого параметра.
Первым шагом к регистрации пользовательской цепочки инструментов является создание ToolchainInfo объект, содержащий информацию о цепочке инструментов. Доступны методы для задания спецификаций цепочки инструментов. Вы можете поделиться ToolchainInfo объект между установками.
Откройте файл определения цепочки инструментов для компилятора Intel. Этот файл создает ToolchainInfo объект, содержащий информацию о цепочке инструментов Intel на 64-разрядной платформе Windows ®.
edit intel_tc type intel_tc
function tc = intel_tc
%INTEL_TC Creates an Intel v18 ToolchainInfo object.
% This file can be used as a template to define other toolchains on Windows.
% Copyright 2012-2019 The MathWorks, Inc.
tc = coder.make.ToolchainInfo('BuildArtifact', 'nmake makefile');
tc.Name = 'Intel v18 | nmake makefile (64-bit Windows)';
tc.Platform = 'win64';
tc.SupportedVersion = '18';
tc.addAttribute('TransformPathsWithSpaces');
tc.addAttribute('RequiresCommandFile');
tc.addAttribute('RequiresBatchFile');
% ------------------------------
% Setup
% ------------------------------
% Below we are using %ICPP_COMPILER18% as root folder where Intel Compiler is installed.
% You can either set an environment variable or give full path to the
% compilervars.bat file
tc.ShellSetup{1} = 'call %ICPP_COMPILER18%\bin\compilervars.bat intel64';
% ------------------------------
% Macros
% ------------------------------
tc.addMacro('MW_EXTERNLIB_DIR', ['$(MATLAB_ROOT)\extern\lib\' tc.Platform '\microsoft']);
tc.addMacro('MW_LIB_DIR', ['$(MATLAB_ROOT)\lib\' tc.Platform]);
tc.addMacro('CFLAGS_ADDITIONAL', '-D_CRT_SECURE_NO_WARNINGS');
tc.addMacro('CPPFLAGS_ADDITIONAL', '-EHs -D_CRT_SECURE_NO_WARNINGS');
tc.addMacro('LIBS_TOOLCHAIN', '$(conlibs)');
tc.addMacro('CVARSFLAG', '');
tc.addIntrinsicMacros({'ldebug', 'conflags', 'cflags'});
% ------------------------------
% C Compiler
% ------------------------------
tool = tc.getBuildTool('C Compiler');
tool.setName( 'Intel C Compiler');
tool.setCommand( 'icl');
tool.setPath( '');
tool.setDirective( 'IncludeSearchPath', '-I');
tool.setDirective( 'PreprocessorDefine', '-D');
tool.setDirective( 'OutputFlag', '-Fo');
tool.setDirective( 'Debug', '-Zi');
tool.setFileExtension( 'Source', '.c');
tool.setFileExtension( 'Header', '.h');
tool.setFileExtension( 'Object', '.obj');
tool.setCommandPattern('|>TOOL<| |>TOOL_OPTIONS<| |>OUTPUT_FLAG<||>OUTPUT<|');
% ------------------------------
% C++ Compiler
% ------------------------------
tool = tc.getBuildTool('C++ Compiler');
tool.setName( 'Intel C++ Compiler');
tool.setCommand( 'icl');
tool.setPath( '');
tool.setDirective( 'IncludeSearchPath', '-I');
tool.setDirective( 'PreprocessorDefine', '-D');
tool.setDirective( 'OutputFlag', '-Fo');
tool.setDirective( 'Debug', '-Zi');
tool.setFileExtension( 'Source', '.cpp');
tool.setFileExtension( 'Header', '.hpp');
tool.setFileExtension( 'Object', '.obj');
tool.setCommandPattern('|>TOOL<| |>TOOL_OPTIONS<| |>OUTPUT_FLAG<||>OUTPUT<|');
% ------------------------------
% Linker
% ------------------------------
tool = tc.getBuildTool('Linker');
tool.setName( 'Intel C/C++ Linker');
tool.setCommand( 'xilink');
tool.setPath( '');
tool.setDirective( 'Library', '-L');
tool.setDirective( 'LibrarySearchPath', '-I');
tool.setDirective( 'OutputFlag', '-out:');
tool.setDirective( 'Debug', '');
tool.setFileExtension( 'Executable', '.exe');
tool.setFileExtension( 'Shared Library', '.dll');
tool.setCommandPattern('|>TOOL<| |>TOOL_OPTIONS<| |>OUTPUT_FLAG<||>OUTPUT<|');
% ------------------------------
% C++ Linker
% ------------------------------
tool = tc.getBuildTool('C++ Linker');
tool.setName( 'Intel C/C++ Linker');
tool.setCommand( 'xilink');
tool.setPath( '');
tool.setDirective( 'Library', '-L');
tool.setDirective( 'LibrarySearchPath', '-I');
tool.setDirective( 'OutputFlag', '-out:');
tool.setDirective( 'Debug', '');
tool.setFileExtension( 'Executable', '.exe');
tool.setFileExtension( 'Shared Library', '.dll');
tool.setCommandPattern('|>TOOL<| |>TOOL_OPTIONS<| |>OUTPUT_FLAG<||>OUTPUT<|');
% ------------------------------
% Archiver
% ------------------------------
tool = tc.getBuildTool('Archiver');
tool.setName( 'Intel C/C++ Archiver');
tool.setCommand( 'xilib');
tool.setPath( '');
tool.setDirective( 'OutputFlag', '-out:');
tool.setFileExtension( 'Static Library', '.lib');
tool.setCommandPattern('|>TOOL<| |>TOOL_OPTIONS<| |>OUTPUT_FLAG<||>OUTPUT<|');
% ------------------------------
% Builder
% ------------------------------
tc.setBuilderApplication(tc.Platform);
% --------------------------------------------
% BUILD CONFIGURATIONS
% --------------------------------------------
optimsOffOpts = {'/c /Od'};
optimsOnOpts = {'/c /O2'};
cCompilerOpts = '$(cflags) $(CVARSFLAG) $(CFLAGS_ADDITIONAL)';
cppCompilerOpts = '$(cflags) $(CVARSFLAG) $(CPPFLAGS_ADDITIONAL)';
linkerOpts = {'$(ldebug) $(conflags) $(LIBS_TOOLCHAIN)'};
sharedLinkerOpts = horzcat(linkerOpts, '-dll -def:$(DEF_FILE)');
archiverOpts = {'/nologo'};
% Get the debug flag per build tool
debugFlag.CCompiler = '$(CDEBUG)';
debugFlag.CppCompiler = '$(CPPDEBUG)';
debugFlag.Linker = '$(LDDEBUG)';
debugFlag.CppLinker = '$(CPPLDDEBUG)';
debugFlag.Archiver = '$(ARDEBUG)';
% Set the toolchain flags for 'Faster Builds' build configuration
cfg = tc.getBuildConfiguration('Faster Builds');
cfg.setOption( 'C Compiler', horzcat(cCompilerOpts, optimsOffOpts));
cfg.setOption( 'C++ Compiler', horzcat(cppCompilerOpts, optimsOffOpts));
cfg.setOption( 'Linker', linkerOpts);
cfg.setOption( 'C++ Linker', linkerOpts);
cfg.setOption( 'Shared Library Linker', sharedLinkerOpts);
cfg.setOption( 'Archiver', archiverOpts);
% Set the toolchain flags for 'Faster Runs' build configuration
cfg = tc.getBuildConfiguration('Faster Runs');
cfg.setOption( 'C Compiler', horzcat(cCompilerOpts, optimsOnOpts));
cfg.setOption( 'C++ Compiler', horzcat(cppCompilerOpts, optimsOnOpts));
cfg.setOption( 'Linker', linkerOpts);
cfg.setOption( 'C++ Linker', linkerOpts);
cfg.setOption( 'Shared Library Linker', sharedLinkerOpts);
cfg.setOption( 'Archiver', archiverOpts);
% Set the toolchain flags for 'Debug' build configuration
cfg = tc.getBuildConfiguration('Debug');
cfg.setOption( 'C Compiler', horzcat(cCompilerOpts, optimsOffOpts, debugFlag.CCompiler));
cfg.setOption( 'C++ Compiler', horzcat(cppCompilerOpts, optimsOffOpts, debugFlag.CppCompiler));
cfg.setOption( 'Linker', horzcat(linkerOpts, debugFlag.Linker));
cfg.setOption( 'C++ Linker', horzcat(linkerOpts, debugFlag.CppLinker));
cfg.setOption( 'Shared Library Linker', horzcat(sharedLinkerOpts, debugFlag.Linker));
cfg.setOption( 'Archiver', horzcat(archiverOpts, debugFlag.Archiver));
tc.setBuildConfigurationOption('all', 'Make Tool', '-f $(MAKEFILE)');
Можно отображать ошибки и предупреждения на панели диагностических сообщений из построений, созданных пользовательскими компиляторами. Дополнительные сведения см. в разделе Область диагностических сообщений.
Запустите файл определения цепочки инструментов, чтобы создать ToolchainInfo объект.
tc = intel_tc;
Сохранить ToolchainInfo объект tc в файл MAT.
save intel_tc tc
После создания ToolchainInfo для новой цепочки инструментов зарегистрируйте ее. Регистрация цепочки инструментов в RTW.TargetRegistry. Чтобы зарегистрировать цепочку инструментов, напишите rtwTargetInfo.m файл. Затем добавьте этот файл в путь MATLAB, чтобы система загрузила его автоматически.
type rtwTargetInfo
function rtwTargetInfo(tr)
%RTWTARGETINFO Registration file for custom toolchains.
% Copyright 2012-2019 The MathWorks, Inc.
tr.registerTargetInfo(@loc_createToolchain);
end
% -------------------------------------------------------------------------
% Create the ToolchainInfoRegistry entries
% -------------------------------------------------------------------------
function config = loc_createToolchain
config(1) = coder.make.ToolchainInfoRegistry;
config(1).Name = 'Intel v18 | nmake makefile (64-bit Windows)';
config(1).FileName = fullfile(fileparts(mfilename('fullpath')), 'intel_tc.mat');
config(1).TargetHWDeviceType = {'*'};
config(1).Platform = {computer('arch')};
end
Сбросить TargetRegistry для использования нового rtwTargetInfo.m файл.
RTW.TargetRegistry.getInstance('reset');
Снова откройте диалоговое окно Параметры конфигурации (Configuration Parameters). Выберите «Цепь инструментов». Вы должны увидеть новую цепочку инструментов в списке. Выберите Intel v18 цепь инструментов.
Программно эту задачу можно выполнить с помощью следующих команд:
cs = getActiveConfigSet(model);
set_param(cs, 'Toolchain', tc.Name)
Проверьте выбор.
toolchain = get_param(cs, 'Toolchain')
toolchain =
'Intel v18 | nmake makefile (64-bit Windows)'
Теперь модель можно построить с помощью новой пользовательской цепочки инструментов.
Примечание.Если у вас нет установленной цепочки инструментов Intel, вы можете использовать следующую команду для создания только кода и make-файла.
set_param(cs, 'GenCodeOnly', 'on')
Создайте модель для создания кода и make-файла с использованием новой цепочки инструментов.
slbuild(model)
### Starting build procedure for: rtwdemo_counter ### Successful completion of code generation for: rtwdemo_counter Build Summary Top model targets built: Model Action Rebuild Reason =================================================================================== rtwdemo_counter Code generated Code generation information file does not exist. 1 of 1 models built (0 models already up to date) Build duration: 0h 0m 26.094s
Получение сведений о каталоге построения.
dirInfo = RTW.getBuildDir(model);
Проверьте созданный make-файл.
type(fullfile(dirInfo.BuildDirectory, [model '.mk']))
###########################################################################
## Makefile generated for component 'rtwdemo_counter'.
##
## Makefile : rtwdemo_counter.mk
## Generated on : Mon Jan 11 20:31:42 2021
## Final product: $(RELATIVE_PATH_TO_ANCHOR)\rtwdemo_counter.exe
## Product type : executable
##
###########################################################################
###########################################################################
## MACROS
###########################################################################
# Macro Descriptions:
# PRODUCT_NAME Name of the system to build
# MAKEFILE Name of this makefile
# COMPILER_COMMAND_FILE Compiler command listing model reference header paths
# CMD_FILE Command file
PRODUCT_NAME = rtwdemo_counter
MAKEFILE = rtwdemo_counter.mk
MATLAB_ROOT = D:\JOBARC~1\Bdoc21a\2W09AA~J\matlab
MATLAB_BIN = D:\JOBARC~1\Bdoc21a\2W09AA~J\matlab\bin
MATLAB_ARCH_BIN = $(MATLAB_BIN)\win64
START_DIR = C:\Users\johnr\ONEDRI~1\DOCUME~1\MATLAB\Examples\SIMULI~1\TOOLCH~1
SOLVER =
SOLVER_OBJ =
CLASSIC_INTERFACE = 0
TGT_FCN_LIB = None
MODEL_HAS_DYNAMICALLY_LOADED_SFCNS = 0
RELATIVE_PATH_TO_ANCHOR = ..
COMPILER_COMMAND_FILE = rtwdemo_counter_comp.rsp
CMD_FILE = rtwdemo_counter.rsp
C_STANDARD_OPTS =
CPP_STANDARD_OPTS =
###########################################################################
## TOOLCHAIN SPECIFICATIONS
###########################################################################
# Toolchain Name: Intel v18 | nmake makefile (64-bit Windows)
# Supported Version(s): 18
# ToolchainInfo Version: 2021a
# Specification Revision: 1.0
#
#-------------------------------------------
# Macros assumed to be defined elsewhere
#-------------------------------------------
# ldebug
# conflags
# cflags
#-----------
# MACROS
#-----------
MW_EXTERNLIB_DIR = $(MATLAB_ROOT)\extern\lib\win64\microsoft
MW_LIB_DIR = $(MATLAB_ROOT)\lib\win64
CFLAGS_ADDITIONAL = -D_CRT_SECURE_NO_WARNINGS
CPPFLAGS_ADDITIONAL = -EHs -D_CRT_SECURE_NO_WARNINGS
LIBS_TOOLCHAIN = $(conlibs)
TOOLCHAIN_SRCS =
TOOLCHAIN_INCS =
TOOLCHAIN_LIBS =
#------------------------
# BUILD TOOL COMMANDS
#------------------------
# C Compiler: Intel C Compiler
CC = icl
# Linker: Intel C/C++ Linker
LD = xilink
# C++ Compiler: Intel C++ Compiler
CPP = icl
# C++ Linker: Intel C/C++ Linker
CPP_LD = xilink
# Archiver: Intel C/C++ Archiver
AR = xilib
# MEX Tool: MEX Tool
MEX_PATH = $(MATLAB_ARCH_BIN)
MEX = "$(MEX_PATH)\mex"
# Download: Download
DOWNLOAD =
# Execute: Execute
EXECUTE = $(PRODUCT)
# Builder: NMAKE Utility
MAKE = nmake
#-------------------------
# Directives/Utilities
#-------------------------
CDEBUG = -Zi
C_OUTPUT_FLAG = -Fo
LDDEBUG =
OUTPUT_FLAG = -out:
CPPDEBUG = -Zi
CPP_OUTPUT_FLAG = -Fo
CPPLDDEBUG =
OUTPUT_FLAG = -out:
ARDEBUG =
STATICLIB_OUTPUT_FLAG = -out:
MEX_DEBUG = -g
RM = @del
ECHO = @echo
MV = @ren
RUN = @cmd /C
#----------------------------------------
# "Faster Builds" Build Configuration
#----------------------------------------
ARFLAGS = /nologo
CFLAGS = $(cflags) $(CVARSFLAG) $(CFLAGS_ADDITIONAL) \
/c /Od
CPPFLAGS = $(cflags) $(CVARSFLAG) $(CPPFLAGS_ADDITIONAL) \
/c /Od
CPP_LDFLAGS = $(ldebug) $(conflags) $(LIBS_TOOLCHAIN)
CPP_SHAREDLIB_LDFLAGS =
DOWNLOAD_FLAGS =
EXECUTE_FLAGS =
LDFLAGS = $(ldebug) $(conflags) $(LIBS_TOOLCHAIN)
MEX_CPPFLAGS =
MEX_CPPLDFLAGS =
MEX_CFLAGS =
MEX_LDFLAGS =
MAKE_FLAGS = -f $(MAKEFILE)
SHAREDLIB_LDFLAGS = $(ldebug) $(conflags) $(LIBS_TOOLCHAIN) \
-dll -def:$(DEF_FILE)
###########################################################################
## OUTPUT INFO
###########################################################################
PRODUCT = $(RELATIVE_PATH_TO_ANCHOR)\rtwdemo_counter.exe
PRODUCT_TYPE = "executable"
BUILD_TYPE = "Top-Level Standalone Executable"
###########################################################################
## INCLUDE PATHS
###########################################################################
INCLUDES_BUILDINFO =
INCLUDES = $(INCLUDES_BUILDINFO)
###########################################################################
## DEFINES
###########################################################################
DEFINES_BUILD_ARGS = -DCLASSIC_INTERFACE=0 -DALLOCATIONFCN=0 -DTERMFCN=0 -DONESTEPFCN=1 -DMAT_FILE=0 -DMULTI_INSTANCE_CODE=0 -DINTEGER_CODE=0 -DMT=0
DEFINES_CUSTOM =
DEFINES_OPTS = -DTID01EQ=0
DEFINES_STANDARD = -DMODEL=rtwdemo_counter -DNUMST=1 -DNCSTATES=0 -DHAVESTDIO -DMODEL_HAS_DYNAMICALLY_LOADED_SFCNS=0
DEFINES = $(DEFINES_BUILD_ARGS) $(DEFINES_CUSTOM) $(DEFINES_OPTS) $(DEFINES_STANDARD)
###########################################################################
## SOURCE FILES
###########################################################################
SRCS = $(START_DIR)\rtwdemo_counter_ert_rtw\rtwdemo_counter.c
MAIN_SRC = $(START_DIR)\rtwdemo_counter_ert_rtw\ert_main.c
ALL_SRCS = $(SRCS) $(MAIN_SRC)
###########################################################################
## OBJECTS
###########################################################################
OBJS = rtwdemo_counter.obj
MAIN_OBJ = ert_main.obj
ALL_OBJS = $(OBJS) $(MAIN_OBJ)
###########################################################################
## PREBUILT OBJECT FILES
###########################################################################
PREBUILT_OBJS =
###########################################################################
## LIBRARIES
###########################################################################
LIBS =
###########################################################################
## SYSTEM LIBRARIES
###########################################################################
SYSTEM_LIBS =
###########################################################################
## ADDITIONAL TOOLCHAIN FLAGS
###########################################################################
#---------------
# C Compiler
#---------------
CFLAGS_BASIC = $(DEFINES) @$(COMPILER_COMMAND_FILE)
CFLAGS = $(CFLAGS) $(CFLAGS_BASIC)
#-----------------
# C++ Compiler
#-----------------
CPPFLAGS_BASIC = $(DEFINES) @$(COMPILER_COMMAND_FILE)
CPPFLAGS = $(CPPFLAGS) $(CPPFLAGS_BASIC)
###########################################################################
## INLINED COMMANDS
###########################################################################
###########################################################################
## PHONY TARGETS
###########################################################################
.PHONY : all build buildobj clean info prebuild download execute set_environment_variables
all : build
@cmd /C "@echo ### Successfully generated all binary outputs."
build : set_environment_variables prebuild $(PRODUCT)
buildobj : set_environment_variables prebuild $(OBJS) $(PREBUILT_OBJS)
@cmd /C "@echo ### Successfully generated all binary outputs."
prebuild :
download : $(PRODUCT)
execute : download
@cmd /C "@echo ### Invoking postbuild tool "Execute" ..."
$(EXECUTE) $(EXECUTE_FLAGS)
@cmd /C "@echo ### Done invoking postbuild tool."
set_environment_variables :
@set INCLUDE=$(INCLUDES);$(INCLUDE)
@set LIB=$(LIB)
###########################################################################
## FINAL TARGET
###########################################################################
#-------------------------------------------
# Create a standalone executable
#-------------------------------------------
$(PRODUCT) : $(OBJS) $(PREBUILT_OBJS) $(MAIN_OBJ)
@cmd /C "@echo ### Creating standalone executable "$(PRODUCT)" ..."
$(LD) $(LDFLAGS) -out:$(PRODUCT) @$(CMD_FILE) $(SYSTEM_LIBS) $(TOOLCHAIN_LIBS)
@cmd /C "@echo ### Created: $(PRODUCT)"
###########################################################################
## INTERMEDIATE TARGETS
###########################################################################
#---------------------
# SOURCE-TO-OBJECT
#---------------------
.c.obj :
$(CC) $(CFLAGS) -Fo"$@" "$<"
.cpp.obj :
$(CPP) $(CPPFLAGS) -Fo"$@" "$<"
{$(RELATIVE_PATH_TO_ANCHOR)}.c.obj :
$(CC) $(CFLAGS) -Fo"$@" "$<"
{$(RELATIVE_PATH_TO_ANCHOR)}.cpp.obj :
$(CPP) $(CPPFLAGS) -Fo"$@" "$<"
{$(START_DIR)}.c.obj :
$(CC) $(CFLAGS) -Fo"$@" "$<"
{$(START_DIR)}.cpp.obj :
$(CPP) $(CPPFLAGS) -Fo"$@" "$<"
{$(START_DIR)\rtwdemo_counter_ert_rtw}.c.obj :
$(CC) $(CFLAGS) -Fo"$@" "$<"
{$(START_DIR)\rtwdemo_counter_ert_rtw}.cpp.obj :
$(CPP) $(CPPFLAGS) -Fo"$@" "$<"
{$(MATLAB_ROOT)\rtw\c\src}.c.obj :
$(CC) $(CFLAGS) -Fo"$@" "$<"
{$(MATLAB_ROOT)\rtw\c\src}.cpp.obj :
$(CPP) $(CPPFLAGS) -Fo"$@" "$<"
{$(MATLAB_ROOT)\simulink\src}.c.obj :
$(CC) $(CFLAGS) -Fo"$@" "$<"
{$(MATLAB_ROOT)\simulink\src}.cpp.obj :
$(CPP) $(CPPFLAGS) -Fo"$@" "$<"
ert_main.obj : $(START_DIR)\rtwdemo_counter_ert_rtw\ert_main.c
$(CC) $(CFLAGS) -Fo"$@" $(START_DIR)\rtwdemo_counter_ert_rtw\ert_main.c
rtwdemo_counter.obj : $(START_DIR)\rtwdemo_counter_ert_rtw\rtwdemo_counter.c
$(CC) $(CFLAGS) -Fo"$@" $(START_DIR)\rtwdemo_counter_ert_rtw\rtwdemo_counter.c
###########################################################################
## DEPENDENCIES
###########################################################################
$(ALL_OBJS) : rtw_proj.tmw $(COMPILER_COMMAND_FILE) $(MAKEFILE)
###########################################################################
## MISCELLANEOUS TARGETS
###########################################################################
info :
@cmd /C "@echo ### PRODUCT = $(PRODUCT)"
@cmd /C "@echo ### PRODUCT_TYPE = $(PRODUCT_TYPE)"
@cmd /C "@echo ### BUILD_TYPE = $(BUILD_TYPE)"
@cmd /C "@echo ### INCLUDES = $(INCLUDES)"
@cmd /C "@echo ### DEFINES = $(DEFINES)"
@cmd /C "@echo ### ALL_SRCS = $(ALL_SRCS)"
@cmd /C "@echo ### ALL_OBJS = $(ALL_OBJS)"
@cmd /C "@echo ### LIBS = $(LIBS)"
@cmd /C "@echo ### MODELREF_LIBS = $(MODELREF_LIBS)"
@cmd /C "@echo ### SYSTEM_LIBS = $(SYSTEM_LIBS)"
@cmd /C "@echo ### TOOLCHAIN_LIBS = $(TOOLCHAIN_LIBS)"
@cmd /C "@echo ### CFLAGS = $(CFLAGS)"
@cmd /C "@echo ### LDFLAGS = $(LDFLAGS)"
@cmd /C "@echo ### SHAREDLIB_LDFLAGS = $(SHAREDLIB_LDFLAGS)"
@cmd /C "@echo ### CPPFLAGS = $(CPPFLAGS)"
@cmd /C "@echo ### CPP_LDFLAGS = $(CPP_LDFLAGS)"
@cmd /C "@echo ### CPP_SHAREDLIB_LDFLAGS = $(CPP_SHAREDLIB_LDFLAGS)"
@cmd /C "@echo ### ARFLAGS = $(ARFLAGS)"
@cmd /C "@echo ### MEX_CFLAGS = $(MEX_CFLAGS)"
@cmd /C "@echo ### MEX_CPPFLAGS = $(MEX_CPPFLAGS)"
@cmd /C "@echo ### MEX_LDFLAGS = $(MEX_LDFLAGS)"
@cmd /C "@echo ### MEX_CPPLDFLAGS = $(MEX_CPPLDFLAGS)"
@cmd /C "@echo ### DOWNLOAD_FLAGS = $(DOWNLOAD_FLAGS)"
@cmd /C "@echo ### EXECUTE_FLAGS = $(EXECUTE_FLAGS)"
@cmd /C "@echo ### MAKE_FLAGS = $(MAKE_FLAGS)"
clean :
$(ECHO) "### Deleting all derived files..."
@if exist $(PRODUCT) $(RM) $(PRODUCT)
$(RM) $(ALL_OBJS)
$(ECHO) "### Deleted all derived files."
Если компиляторы Intel установлены, то после завершения процесса сборки можно запустить исполняемый файл.
if ispc system([model '.exe']) else system(model) end
При необходимости можно удалить созданную ранее папку.
cd .. rmdir('toolchain_demo', 's')
Сбросить TargetRegistry для удаления цепочки инструментов, зарегистрированной выше.
RTW.TargetRegistry.getInstance('reset');
Закройте модель.
close_system(model, 0)
Очистите переменные, введенные в рабочую область.
clear INC K LIMIT RESET model tc cs toolchain