Matlab Coder: No rule to make target c_mexapi_version.o
9 次查看(过去 30 天)
显示 更早的评论
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 个评论
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
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 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Neural Simulation 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!