今天重新整合整個組件的編譯配置時,發現一個很奇怪的問題:
在VS2010中,把$(OutPut)設置為output\$(Platform)\fxhelper\$(Configuration)\
把中間目錄$(IntDir)設置為$(OutPut),
設置完後編譯發現每次生成的中間文件還是都在vs2010目錄。
這問題百思不解,實在找不到答案,怎麼設置都不對,如果把$(OutPut)設成其他,他又是生效的,
後來打開工程文件.vcxproj終於發現有一個地方的先後順序貌似有問題,如下:
充中看到他的中間目錄$(IntDir)的定義在輸出目錄$(OutPut)的定義之前,所以他的$(OutPut)變量認為是空的,
所以就不對了,我把他改成如下,立馬就能達到我的要求了
我認為這個完全是微軟的坑爹設計,用戶在不用文本方式打開工程文件的話,怎麼可能發現這樣的bug。
從此記住一點,在vs中設置變量(特別是第一次設置該變量時),也要考慮下設置的順序,不然他生成的工程文件中,
先後順序不對,就全錯了。錯了後再修改其變量如上問中的$(OutPut),$(IntDir)也不會再生效了,只對$(OutPut)生效。
可以用相對路徑的.
保持Linker->General->Output File 為 默認值$(OutDir)$(TargetName)$(TargetExt)不變, 輸出目錄改成什麼都行.
不過貌似你的TargetPath還少了擴展名.exe呀
兩種方法
1、把你的那個xml先復制到B項目中,設置這個xml屬性為 生成時自動拷貝到生成目錄
2、用資源文件的形式將xml包含到A項目中,那你編譯A時,這個xml就已經包含在A.dll中了。到B中直接調出來使用即可,