將glog日誌系統引入靜態庫項目中

  因爲項目需要,引入glog到項目中,將glog源碼下載下來後,使用cmake成功編譯爲vs工程(這個時候需要選擇你需要使用vs版本,本人選擇vs2015),用vs2015將代碼編譯,工程中的glog動態庫就是我需要的,編譯glog得到靜態庫,測試其他的demo是否可以正常使用此glog.lib庫文件,測試signalhandler_unittest發現能用。鑑於我不只想要靜態庫,我需要將整個glog的項目移到我的工程中,於是直接將glog項目文件及其依賴的文件直接拷貝到我的項目文件下,再在我的工程中直接添加此glog工程到我的解決方案下,這時候編譯肯定是一堆得報錯,因爲我們這麼直接拷貝,glog.vcxproj中的很多的配置和以來沒有改,編譯項目肯定是找不到我們想要的文件路徑下的頭文件、源文件、依賴庫文件的,這個時候就需要自己修改glog.vcxproj了,這個文件其實就是個xml文件,你得知道xml中一些關鍵屬性的意義,在此不多說,這個靠經驗積累。

  經過一番修改後,終於可以在我的解決方案下編譯成功glog了,這個過程可能需要防止glog項目中的文件有和自己項目有衝突的,有衝突沒關係!那就通過改名或者加命名空間解決衝突,一句話,只要讓編譯器能夠正確區分之前衝突的那些文件,解決衝突後,可能需要修改一些宏定義才能編譯glog成功,這點要注意。

  glog編譯成功了,那我們的項目如何使用glog呢,老規矩,在我的想要引入glog日誌的A工程的項目屬性中,修改頭文件目錄,使之包含glog的相關頭文件,這個過程看你自己是怎麼放的,同樣的道理,在庫文件目錄增加對glog庫文件的包含,這樣你在A工程中通過引入glog頭文件來使用glog中接口,可能這個時候仍舊會報錯,根據vs編譯輸出,你再根據error所在,修改A工程項目屬性中的頭文件包含目錄、庫文件包含目錄,一句話,“只要A工程的項目屬性能夠正確引用到glob的頭文件、庫文件,項目屬性各編譯選項和glog匹配,A工程就能使用glog庫文件。”,這句話是我解決此類庫文件引入問題的經驗所得。這個A工程中使用glog的過程中還有一個小插曲,就是我頭文件包含目錄、庫文件包含都設置對了,各個項目屬性都對比設置後,編譯A工程仍然報錯提示我在A工程中使用的glog api InitGoogleLogging是不可識別的標識符,這個報錯很常見,一般都是找不到庫文件導致,百思不得其解之後,我在A工程項目屬性-->C++--->預處理器中添加了一個”GOOGLE_GLOG_DLL_DECL=;“宏,再編譯,順利通過!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章