Main Content

coder.target

Determine if code generation target is specified target

Description

example

tf = coder.target(target) returns true (1) if the code generation target is target. Otherwise, it returns false (0).

If you generate code for MATLAB® classes, MATLAB computes class initial values at class loading time before code generation. If you use coder.target in MATLAB class property initialization, coder.target('MATLAB') returns true.

Examples

collapse all

Parametrize a MATLAB function so that it works in MATLAB or in generated code. When the function runs in MATLAB, it calls the MATLAB function myabsval. The generated code, however, calls a C library function myabsval.

Write a MATLAB function myabsval.

function y = myabsval(u)   
%#codegen
y = abs(u);

Generate a C static library for myabsval, using the -args option to specify the size, type, and complexity of the input parameter.

codegen -config:lib myabsval -args {0.0}
The codegen function creates the library file myabsval.lib and header file myabsval.h in the folder \codegen\lib\myabsval. (The library file extension can change depending on your platform.) It generates the functions myabsval_initialize and myabsval_terminate in the same folder.

Write a MATLAB function to call the generated C library function using coder.ceval.

function y = callmyabsval(y)  
%#codegen
% Check the target. Do not use coder.ceval if callmyabsval is
% executing in MATLAB
if coder.target('MATLAB')
  % Executing in MATLAB, call function myabsval
  y = myabsval(y);
else
  % add the required include statements to generated function code
  coder.updateBuildInfo('addIncludePaths','$(START_DIR)\codegen\lib\myabsval');
  coder.cinclude('myabsval_initialize.h');
  coder.cinclude('myabsval.h');
  coder.cinclude('myabsval_terminate.h');

  % Executing in the generated code. 
  % Call the initialize function before calling the 
  % C function for the first time
  coder.ceval('myabsval_initialize');

  % Call the generated C library function myabsval
  y = coder.ceval('myabsval',y);
  
  % Call the terminate function after
  % calling the C function for the last time
  coder.ceval('myabsval_terminate');
end

Generate the MEX function callmyabsval_mex. Provide the generated library file at the command line.

codegen -config:mex callmyabsval codegen\lib\myabsval\myabsval.lib -args {-2.75}

Rather than providing the library at the command line, you can use to specify the library within the function. Use this option to preconfigure the build. Add this line to the else block:

coder.updateBuildInfo('addLinkObjects','myabsval.lib','$(START_DIR)\codegen\lib\myabsval',100,true,true);

Run the MEX function callmyabsval_mex which calls the library function myabsval.

callmyabsval_mex(-2.75)
ans =

    2.7500

Call the MATLAB function callmyabsval.

callmyabsval(-2.75)
ans =

    2.7500
The callmyabsval function exhibits the desired behavior for execution in MATLAB and in code generation.

Input Arguments

collapse all

Code generation target, specified as a character vector or a string scalar. Specify one of these targets.

'MATLAB'Running in MATLAB (not generating code)
'MEX'Generating a MEX function
'Sfun'Simulating a Simulink® model. Also used for running in Accelerator mode.
'Rtw'Generating a LIB, DLL, or EXE target. Also used for running in Simulink Coder™ and Rapid Accelerator mode.
'HDL'Generating an HDL target
'Custom'Generating a custom target

Example: tf = coder.target('MATLAB')

Example: tf = coder.target("MATLAB")

Introduced in R2011a