Matlab Coder: No rule to make target c_mexapi_version.o

조회 수: 9 (최근 30일)
Andrew Tran
Andrew Tran 2017년 3월 17일
편집: Ryan Livingston 2017년 5월 8일
Hey everybody! I'm trying to convert a time-costly loop I have into a MEX file that I can call from the rest of my MATLAB function, but I'm having trouble compiling it.
I get the following printouts when trying to compile it:
------------------------------------------------------------------------
gcc -c -fexceptions -fno-omit-frame-pointer -DTARGET_API_VERSION=700 -m64 -DMATLAB_MEX_FILE -DMATLAB_MEX_FILE -g -I "D:\Program Files\MATLAB\R2017a/simulink/include" -I "D:\Program Files\MATLAB\R2017a/toolbox/shared/simtargets" -I "D:\Users\Andrew\Google Drive\UCSB\Computational Cognitive Neuroscience Research\Development Code Base\codegen\mex\run_trials" -I "D:\Users\Andrew\Google Drive\UCSB\Computational Cognitive Neuroscience Research\Development Code Base" -I ".\interface" -I "D:\Program Files\MATLAB\R2017a\extern\include" -I "." "run_trials_data.c"
gcc -c -fexceptions -fno-omit-frame-pointer -DTARGET_API_VERSION=700 -m64 -DMATLAB_MEX_FILE -DMATLAB_MEX_FILE -g -I "D:\Program Files\MATLAB\R2017a/simulink/include" -I "D:\Program Files\MATLAB\R2017a/toolbox/shared/simtargets" -I "D:\Users\Andrew\Google Drive\UCSB\Computational Cognitive Neuroscience Research\Development Code Base\codegen\mex\run_trials" -I "D:\Users\Andrew\Google Drive\UCSB\Computational Cognitive Neuroscience Research\Development Code Base" -I ".\interface" -I "D:\Program Files\MATLAB\R2017a\extern\include" -I "." "run_trials_initialize.c"
gcc -c -fexceptions -fno-omit-frame-pointer -DTARGET_API_VERSION=700 -m64 -DMATLAB_MEX_FILE -DMATLAB_MEX_FILE -g -I "D:\Program Files\MATLAB\R2017a/simulink/include" -I "D:\Program Files\MATLAB\R2017a/toolbox/shared/simtargets" -I "D:\Users\Andrew\Google Drive\UCSB\Computational Cognitive Neuroscience Research\Development Code Base\codegen\mex\run_trials" -I "D:\Users\Andrew\Google Drive\UCSB\Computational Cognitive Neuroscience Research\Development Code Base" -I ".\interface" -I "D:\Program Files\MATLAB\R2017a\extern\include" -I "." "run_trials_terminate.c"
gcc -c -fexceptions -fno-omit-frame-pointer -DTARGET_API_VERSION=700 -m64 -DMATLAB_MEX_FILE -DMATLAB_MEX_FILE -g -I "D:\Program Files\MATLAB\R2017a/simulink/include" -I "D:\Program Files\MATLAB\R2017a/toolbox/shared/simtargets" -I "D:\Users\Andrew\Google Drive\UCSB\Computational Cognitive Neuroscience Research\Development Code Base\codegen\mex\run_trials" -I "D:\Users\Andrew\Google Drive\UCSB\Computational Cognitive Neuroscience Research\Development Code Base" -I ".\interface" -I "D:\Program Files\MATLAB\R2017a\extern\include" -I "." "run_trials.c"
gcc -c -fexceptions -fno-omit-frame-pointer -DTARGET_API_VERSION=700 -m64 -DMATLAB_MEX_FILE -DMATLAB_MEX_FILE -g -I "D:\Program Files\MATLAB\R2017a/simulink/include" -I "D:\Program Files\MATLAB\R2017a/toolbox/shared/simtargets" -I "D:\Users\Andrew\Google Drive\UCSB\Computational Cognitive Neuroscience Research\Development Code Base\codegen\mex\run_trials" -I "D:\Users\Andrew\Google Drive\UCSB\Computational Cognitive Neuroscience Research\Development Code Base" -I ".\interface" -I "D:\Program Files\MATLAB\R2017a\extern\include" -I "." "normrnd.c"
gcc -c -fexceptions -fno-omit-frame-pointer -DTARGET_API_VERSION=700 -m64 -DMATLAB_MEX_FILE -DMATLAB_MEX_FILE -g -I "D:\Program Files\MATLAB\R2017a/simulink/include" -I "D:\Program Files\MATLAB\R2017a/toolbox/shared/simtargets" -I "D:\Users\Andrew\Google Drive\UCSB\Computational Cognitive Neuroscience Research\Development Code Base\codegen\mex\run_trials" -I "D:\Users\Andrew\Google Drive\UCSB\Computational Cognitive Neuroscience Research\Development Code Base" -I ".\interface" -I "D:\Program Files\MATLAB\R2017a\extern\include" -I "." "indexShapeCheck.c"
gcc -c -fexceptions -fno-omit-frame-pointer -DTARGET_API_VERSION=700 -m64 -DMATLAB_MEX_FILE -DMATLAB_MEX_FILE -g -I "D:\Program Files\MATLAB\R2017a/simulink/include" -I "D:\Program Files\MATLAB\R2017a/toolbox/shared/simtargets" -I "D:\Users\Andrew\Google Drive\UCSB\Computational Cognitive Neuroscience Research\Development Code Base\codegen\mex\run_trials" -I "D:\Users\Andrew\Google Drive\UCSB\Computational Cognitive Neuroscience Research\Development Code Base" -I ".\interface" -I "D:\Program Files\MATLAB\R2017a\extern\include" -I "." "interface/_coder_run_trials_info.c"
gcc -c -fexceptions -fno-omit-frame-pointer -DTARGET_API_VERSION=700 -m64 -DMATLAB_MEX_FILE -DMATLAB_MEX_FILE -g -I "D:\Program Files\MATLAB\R2017a/simulink/include" -I "D:\Program Files\MATLAB\R2017a/toolbox/shared/simtargets" -I "D:\Users\Andrew\Google Drive\UCSB\Computational Cognitive Neuroscience Research\Development Code Base\codegen\mex\run_trials" -I "D:\Users\Andrew\Google Drive\UCSB\Computational Cognitive Neuroscience Research\Development Code Base" -I ".\interface" -I "D:\Program Files\MATLAB\R2017a\extern\include" -I "." "interface/_coder_run_trials_api.c"
gcc -c -fexceptions -fno-omit-frame-pointer -DTARGET_API_VERSION=700 -m64 -DMATLAB_MEX_FILE -DMATLAB_MEX_FILE -g -I "D:\Program Files\MATLAB\R2017a/simulink/include" -I "D:\Program Files\MATLAB\R2017a/toolbox/shared/simtargets" -I "D:\Users\Andrew\Google Drive\UCSB\Computational Cognitive Neuroscience Research\Development Code Base\codegen\mex\run_trials" -I "D:\Users\Andrew\Google Drive\UCSB\Computational Cognitive Neuroscience Research\Development Code Base" -I ".\interface" -I "D:\Program Files\MATLAB\R2017a\extern\include" -I "." "interface/_coder_run_trials_mex.c"
gcc -c -fexceptions -fno-omit-frame-pointer -DTARGET_API_VERSION=700 -m64 -DMATLAB_MEX_FILE -DMATLAB_MEX_FILE -g -I "D:\Program Files\MATLAB\R2017a/simulink/include" -I "D:\Program Files\MATLAB\R2017a/toolbox/shared/simtargets" -I "D:\Users\Andrew\Google Drive\UCSB\Computational Cognitive Neuroscience Research\Development Code Base\codegen\mex\run_trials" -I "D:\Users\Andrew\Google Drive\UCSB\Computational Cognitive Neuroscience Research\Development Code Base" -I ".\interface" -I "D:\Program Files\MATLAB\R2017a\extern\include" -I "." "run_trials_emxutil.c"
gmake: *** No rule to make target `c_mexapi_version.o', needed by `run_trials_mex.mexw64'. Stop.
------------------------------------------------------------------------
I used the Matlab Coder application to automatically generate a build script, which invokes the following command that causes this error:
%%Invoke MATLAB Coder.
codegen -config cfg run_trials -args ARGS{1}
I'd appreciate pointers as to how to fix this make issue. Thanks!
  댓글 수: 5
Andrew Tran
Andrew Tran 2017년 3월 18일
Hey Ryan, following the first suggestion on the solution list of manually creating a short name fixed my problem! It now compiles (and I believe runs properly). Thanks for your help!
Walter Roberson
Walter Roberson 2017년 3월 18일
Ryan: Andrew suggests moving your comment into an Answer so that Andrew can Accept it as the solution.

댓글을 달려면 로그인하십시오.

채택된 답변

Ryan Livingston
Ryan Livingston 2017년 3월 20일
편집: Ryan Livingston 2017년 5월 8일
Edit
A bug report:
has been published for this issue that includes a patch for MATLAB R2017a. It is recommended to install that patch to resolve this.
Original Answer with Manual Fix
If you look at the file run_trials_mex.mk you'll notice that c_mexapi_version.c is indeed in the source files SRC_FILES.
However, you'll notice that MATLAB_ROOT and START_DIR both have spaces in them:
D:\Program Files\MATLAB\R2017a
Coder typically uses the Windows short name (like C:\PROGRA~1\MATLAB\R2017a) to avoid issues with Makefiles and spaces in paths but such names can be disabled. My theory is that this is why the file from MATLABROOT isn't matching the targets further down in the file.
This answer:
describes the situation in great detail for Simulink and gives steps to enable short names if possible. It also gives workarounds if doing so isn't possible.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Neural Simulation에 대해 자세히 알아보기

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by