Макрос компиляции мекс

Я хочу включить определенный заголовочный файл только тогда, когда мой код скомпилирован с помощью команды mex в Matlab. Если он скомпилирован непосредственно с помощью Visual Studio, я не хочу его включать.

Есть ли макрос, который может помочь с этим?

Я хотел бы сделать что-то в этом роде:

#ifdef MEX_COMPILE_FLAG
#include "mexDependent.h"
#end

person Leo    schedule 31.07.2013    source источник
comment
Когда он скомпилирован непосредственно с помощью Visual Studio, создает ли VS файл *.mex или отдельный файл *.exe?   -  person aschepler    schedule 31.07.2013
comment
@aschepler автономный   -  person Leo    schedule 31.07.2013
comment
Я обнаружил, что если я позабочусь о том, чтобы включить mex.h перед чем-либо еще, можно использовать макрос mex_h.   -  person Leo    schedule 31.07.2013


Ответы (3)


Для этого можно использовать макрос MATLAB_MEX_FILE. Чтобы mex.h работал правильно, этот макрос должен быть определен тогда и только тогда, когда скомпилированный объект в конечном итоге будет связан с mex-файлом. Таким образом, команда mex всегда определяет его при вызове компилятора.

person aschepler    schedule 31.07.2013

Вы можете сделать это вручную:

mex -DMEX_COMPILE_FLAG ...
person stijn    schedule 31.07.2013

Насколько я знаю, mex просто вызывает какой-то другой компилятор без надежной установки макроса препроцессора. Однако, если ваш сценарий сборки Matlab действительно устанавливает MEX_COMPILE_FLAG, то ваше предложение будет работать, за исключением того, что #end должно быть #endif.

person DUman    schedule 31.07.2013