C/C++ 條件編譯靜態庫或動態庫


==》windows 下方法:

1.方法一:VS工程中中直接添加

1.1在VS的屬性-》常規-》附加庫目錄,添上文件夾的路徑:例如:lib/x64;

1.2輸入的附加依賴項,添加上庫的名字,例如:dmapi.lib

1.3 對用到該庫的代碼進行,宏包含,例如:

 #ifdef LOG_XY

...

#endif

1.4 當你在工程編譯時,在c/c++-》預處理器-》預處理器定義,中未定義LOG_XY 時,就不會依賴庫dmapi.lib

2.方法二:在代碼中添加

#ifdef _WIN32
#ifdef LOG_XY
#pragma comment(lib,"..\prj_cpt_dm7\\lib\\x64\\dmapi.lib")
#else
//#pragma comment(lib,"..\prj_cpt_dm7\\lib\\x64\\dmapi.lib")
#endif
#endif
即可。
 
==》LINUX 下,比較簡單:
在makefile 中庫和頭文件中,用宏區分即可,例如:
LOG_XY_FLAG=0
...
ifeg($LOG_XY_FLAG), 1)
LOGXYLIB=-L/opt/test/ -ldmapi
else
LOGXYLIB=
endif
...
然后編譯加上上面的LOGXYLIB就可以了。
 
 注:在添加新功能含有新的依賴庫時,為防止在僅需要舊的功能時,依然要依賴了新的依賴庫,就會用到以上方法。
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM