歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

CMake並沒有想象中好用

簡單說,CMake可以自動生成各個平台的build(make)文件,從而達到編寫一份build腳本就可以自動在各平台生成獨自的工程文件。

這似乎聽起來很好,但是實際使用中會有各種惡心的問題。導致有的時候我寧願自己重新搭建工程文件也不想用cmake。

1、首先你要熟悉cmake才能知道為什麼它沒有成功的生成工程文件,單單一個xxx not found是無法幫助我們解決問題的。但是大多數時候我並不想學習cmake,我想要的僅僅是生成工程文件,然後運行。之後ide再報什麼文件沒有找到的話,我自己再修改和添加。我熟悉vs 也熟悉xcode,但是現在還要熟悉cmake。。。。。

2、緊接著上面一點,cmake的工程文件並不那麼好生成。很多時候由於各種依賴,導致無法生成。如果作者心地善良的話,還會准備好depslibrary,否則的話,你就要自己一個一個去找。這起始並沒有什麼問題,但是我寧願先給我生成工程文件,然後我對其進行刪減,去掉不需要的東西,或者是我再一個一個添加依賴庫。雖然這聽起來跟先准備依賴庫然後再生成工程差不多。但是實際操作中完全是兩碼事,因為我熟悉vs,我可以輕易的按照自己的喜好添加好對應文件(比如相對路徑,比如我自己保留一份常用的第三方庫依賴包)。如果用cmake,你必須把指定的文件放到指定的地方。(ps:雖然我知道這些強制依賴並不是cmake的問題,但是很多人濫用了這些強制檢查,就使得cmake並不符合我的胃口)

3、cmake還有個功能是可以設置編譯前和編譯後運行腳本。這個原本很正常,但是實際使用中還是會有把你惡心到。比如xcode下面作者可以設定自動拷貝一些資源文件,但是這並不方便,也跟我的傳統用法相矛盾,以至於我要重新添加下資源文件,並且要修改生成的包的位置。

說了這些雞毛蒜皮但是確確實實把我惡心到的小事,然後再說說我心目中的可以方便使用的跨平台工程是什麼樣子的:

1、作者在哪個平台開發,提供哪個平台的工程文件,這樣我們至少有一份保證正確的工程文件。(如果是vs的話,使用相對路徑,避免本地文件依賴。)

2、代碼本身足夠清晰,把平台相關的東西集中到一起。這樣即便沒有提供xcode的工程文件,我也可以非常輕易的搭建好工程----簡簡單單的把文件拖進來,刪除非mac平台的文件,添加好依賴。這裡舉個反例,freetype雖然功能強大到無以復加,但是代碼實在是惡心,各種#include "xxx.c"的形式,而我們真正需要編譯的文件隱藏在各種被包含的.c文件之中,如果要搭建一個xcode的工程,要從中一個一個把文件摘出來,我只想說,何必呢?

Copyright © Linux教程網 All Rights Reserved