我希望僅在我的代碼通過Matlab中的mex命令編譯時包含某個頭文件。如果它是用Visual Studio直接編譯的,我不希望它包含在內。Mex編譯宏
有沒有可以幫助的宏?
我願意做這樣的事情:
#ifdef MEX_COMPILE_FLAG
#include "mexDependent.h"
#end
我希望僅在我的代碼通過Matlab中的mex命令編譯時包含某個頭文件。如果它是用Visual Studio直接編譯的,我不希望它包含在內。Mex編譯宏
有沒有可以幫助的宏?
我願意做這樣的事情:
#ifdef MEX_COMPILE_FLAG
#include "mexDependent.h"
#end
您可以使用宏MATLAB_MEX_FILE
這個。爲了讓mex.h正常工作,當且僅當編譯對象最終被鏈接到一個mex文件中時,這個宏必須被定義。因此,mex
命令確保在調用編譯器時始終對其進行定義。
您可以手動執行此操作:
mex -DMEX_COMPILE_FLAG ...
據我所知,mex
只是調用一些其他的編譯器不可靠設置一個預處理宏。但是,如果您的Matlab構建腳本確實設置了MEX_COMPILE_FLAG
,那麼您的提議將起作用,但#end
需要爲#endif
。
當「它直接用Visual Studio編譯」時,VS創建一個* .mex文件還是一個獨立的* .exe? – aschepler
@aschepler standalone – Leo
我發現,如果我小心地在其他任何地方加入「mex.h」,可以使用mex_h宏。 – Leo