2013-07-31 173 views
3

我希望僅在我的代碼通過Matlab中的mex命令編譯時包含某個頭文件。如果它是用Visual Studio直接編譯的,我不希望它包含在內。Mex編譯宏

有沒有可以幫助的宏?

我願意做這樣的事情:

#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