2013-07-31 4 views
3

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

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

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

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

Когда «он скомпилирован непосредственно с помощью Visual Studio», VS создает файл * .mex или автономный * .exe? – aschepler

+0

@aschepler standalone – Leo

+0

Я обнаружил, что если я позабочусь о включении «mex.h» перед чем-либо еще, можно использовать макрос mex_h. – Leo

ответ

4

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

3

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

mex -DMEX_COMPILE_FLAG ... 
0

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