1. 程式人生 > >做一個懶COCOS2D-X程式猿(一)停止手打所有cpp檔案到android.mk[轉]

做一個懶COCOS2D-X程式猿(一)停止手打所有cpp檔案到android.mk[轉]

前言:”懶”在這裡當然不是貶義詞,而是追求高效,拒絕重複勞動的代名詞!做一個懶COCOS2D-X程式猿的系列文章將教會大家在工作中如何偷懶,文章篇幅大多較短,有的甚至只是幾行程式碼,爭取把懶發揮到極致!

 

一.懶人說書

Android.mk中LOCAL_SRC_FILES需要羅列出所有參與編譯的檔案,這樣在.cpp檔案少的時候還可以一個一個新增,當有幾百個檔案的時候會十分的痛苦!

我們下看看TestCpp工程中的Android.mk檔案:

QQ截圖20130717200015

 

這只是節選的一部分,大概只有50個左右吧,除數量多之外讓我們看看下面的情況:

1改變了其中一個檔名就得修改mk檔案,痛苦之處顯而易見,而且會重新編譯整個工程!

2.手工新增時因為失誤多了空格,少了\之類事情很常見,得重新編譯後才能發現問題!

二.進擊的懶人

是不是不能忍受了!讓我們試著改變下吧!

1.寫個指令碼自動變數裡Classes資料夾下的所有.cpp檔案,生成和上面類似的Android.mk檔案.這個比手動新增要方便好多,但還是沒有從根本上解決問題!

 

2.有木有辦法在Android.mk中做手腳,不用羅列所有的.cpp檔案呢?直到我看到了這篇文章:

http://blog.csdn.net/qq634416025/article/details/8904466

C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 LOCAL_PATH : = $ ( call my - dir )   include $ ( CLEAR_VARS )   LOCAL_MODULE : = hellocpp_shared   LOCAL_MODULE_FILENAME : = libhellocpp   FILE_LIST : = hellocpp / main . cpp FILE_LIST + = $ ( wildcard $ ( LOCAL_PATH ) / . . / . . / Classes / * . cpp ) LOCAL_SRC_FILES : = $ ( FILE_LIST : $ ( LOCAL_PATH ) / %= % )   LOCAL_C_INCLUDES : = $ ( LOCAL_PATH ) / . . / . . / Classes   LOCAL_WHOLE_STATIC_LIBRARIES : = cocos2dx_static   include $ ( BUILD_SHARED_LIBRARY )   $ ( call import - module , cocos2dx )

這樣就OK了,不用手打所有的.cpp檔案了!

 

但這這個做法還是有缺陷,就是如果Classes有子資料夾的話還是得在新增上去的,如下:

C++
1 2 3 #FILE_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/*.cpp) #FILE_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/datapacker/*.cpp) #FILE_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/platform/*.cpp)

這個樣子的寫法已經很高端了,有新的子檔案的時候新增下就好,但是對於懶到極致的人還是不能接受!

 

3.終極解決方案

上邊的解決方案用到了wildcard這個關鍵子,雖然不明白這是神馬東西,但肯定可這個有關!於是經過一番google之後,便有了下面的這個:

C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 # 遍歷目錄及子目錄的函式 define walk      $ ( wildcard $ ( 1 ) ) $ ( foreach e , $ ( wildcard $ ( 1 ) / * ) , $ ( call walk , $ ( e ) ) ) endef   # 遍歷Classes目錄 ALLFILES = $ ( call walk , $ ( LOCAL_PATH ) / . . / . . / Classes )   FILE_LIST : =

相關推薦

一個COCOS2D-X程式()停止所有cpp檔案android.mk[]

前言:”懶”在這裡當然不是貶義詞,而是追求高效,拒絕重複勞動的代名詞!做一個懶COCOS2D-X程式猿的系列文章將教會大家在工作中如何偷懶,文章篇幅大多較短,有的甚至只是幾行程式碼,爭取把懶發揮到極致!   一.懶人說書 Android.mk中LOCAL_SRC_FIL

Cocos2d-x 3.1 步步螢幕適配

本文並不想講關於螢幕適配的概念或者大道理,如果還不瞭解cocos2d-x螢幕適配的,請先看這篇文章:http://www.cocoachina.com/gamedev/cocos/2014/0516/8451.html。本文有一些內容和圖片是引用這篇文章的。看了那麼多網上關

新浪微博體驗報告 -- 一個懂設計的程式設計師

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

51萬年曆林賢文:一個不“安分”的程式設計師

如果不是特意介紹,你很難將林賢文從一堆程式設計師中分辨出來,特別是當他身著便裝,與你侃侃而談時,就和一個普通的中年大叔更是沒有兩樣。不過,如果當你得知他就是那個開發了近3億使用者都在使用的APP——“51萬年曆”的作者時,你就會真的明白“人不可貌相”這句諺語的真正含義。 艱難程式設計路

別讓自己變為一個廢掉的程式

一個人開始廢掉的標誌是什麼? 有人說是無所事事,終日啃老;有人說是沉溺遊戲,臥床不起;可你有沒有想過,或許下一個廢掉的人,剛好是看似勤奮忙碌的你。 一,沉浸在舒適區裡,每天做著無效的努力 前幾天半夜接到老友的電話,一個三十多歲的男人,蹲在自家黑漆漆的車庫裡抱頭大哭。

51萬年曆林賢文:一個不“安分”的程式設計師()

2018年10月15日 09:35:19 孫浩峰 閱讀數:4576 標籤: 51萬年曆程式人生移動開發APP程式設計師收起 個人分類: 移動開發 如果不是特意介紹,你很難將林賢文從一堆程式設計師中分辨出來,特別是當他身著便裝,與你侃侃而談時,就和一個普通的中年大叔更是

ID:23----一個類似QQ的程式

2017年3月30日 09:14:00 想法新增 2017年4月19日 10:54:54 更新進度 目前完成的功能為 1.登入 2.註冊 3.記住密碼+自動登入 4.聊天 5.更新 2017年9月22日 09:24

天練習一個小C/C++程式) 控制檯版“金山打字”遊戲

今天練習了一個C語言小程式,控制檯版的簡易“金山打字”小遊戲。 效果圖: 程式碼: #include<stdio.h> #include<stdlib.h> #incl

完全零基礎一個微信小程式記錄~

作為一隻數學系大二的小菜喵,之前聽過一個微信小程式的產品展示,覺得微信小程式還挺好玩的,不過自己沒有接觸過前端開發,很多東西都在自己摸索,把一些有意思的東西記錄下來,以備以後查閱,也給一些非科班的程式猿們在掙扎中提供一點借鑑~ 微信小程式對新手非常友好,如

用Jmeter一個簡單的介面測試(

Jmeter介面測試例項 1.新建一個Thread Group 2. 線上程組下建一個HTTP請求 3. 在http請求下建檢視結果樹 4. 在http請求下建聚合報告 5.在http請求下建圖形結果 6.執行 最後右擊執行緒組,單擊

零基礎案例,別再錯過了,動手Python一個電話本小程式

最近比較忙,只能抽空的寫寫文章,其實我也是一個上班族,python完全是個人想學然後希望以後對工作有所幫助,2019年了,祝大家新年快樂。 我們就必須要懂得寫指令碼來提高下效率了。希望將來會達到那種程度咯,現在的話,先帶大家從基本開始學起吧。 模擬電話本小程式,從實際去學習:

Java全棧程式設計師之01:個Linux下的程式

       Windows10正在成為史上口碑最差的Windows系統 (圖侵刪)        我曾經花了數次1小時去尋找解決方案去關閉自動更新,包括停掉服務、修改登錄檔等等。但是都沒有成功。        微軟自身是知道這個問題的,但就跟過去幾年的很多微軟的技術框架一樣,我就是一意孤行,你能把

一個有理想的程式設計師(

  一個程式設計師要取得非凡成就,需要記住的15件事。 1、走一條不一樣的路       在有利於自己的市場中競爭,如果你滿足於"泯然眾人矣",那恐怕就得跟那些低工資國家的程式設計師們同場競技了。 2、瞭解自己的公司     不同公司的運營模式差異極大。如果

微信小程式怎麼申請 從零開始一個微信小程式教程

微信小程式申請前的準備: 首先,你需要註冊一個小程式賬號。需要用一個沒註冊過公眾號的郵箱註冊。註冊過程中需要很多認證,比較繁瑣。如果暫時只是試水、沒有釋出的打算,那麼只要完成基本資訊填寫就可以,不需要完成微信認證。 之後,就可以在公眾平臺使用註冊的帳戶進行登入。 然後,在主

Cocos2d-x學習(Cocos2d-x2.2.6安裝前準備

玩遊戲是一件很有意思的事情,但如果自己可以開發一款遊戲,我想那會更有意思,我有一個關於導演和演員的夢,啊,當然不是那種單一場景的喲,額,貌似這麼說,有點對不住郭德綱,當然現實中去實現這個導演和演員的夢,

cocos2d-x Tests講解:Tests的整體架構

{    CCSetIterator it = pTouches->begin();    CCTouch* touch = (CCTouch*)(*it);    CCPoint touchLocation = touch->locationInView( touch->view() );

程式天只工作6個小時,而且基本上不加班是種怎麼樣的體驗?

        我目前就職於惠普,我們每天只工作六個小時。上午從九點半到十一點半,下午從一點半到五點半,中午休息兩個小時。作為新入職的員工,我是嚴格遵守這個工作時間的。但是有很多老員工,基本上每天早上十點多才到公司,下午四五點就走了。算下來他們的平均工作時間就才四個小時左右。

一個關於小小小程式編碼的總結

在完成一個簡單的“登陸學生管理系統”後的總結: 忘記全域性變數的定義,導致程式碼的一直報錯。函式的調用出現了思維上的混亂。函式的編寫程式碼出現了簡單的邏輯和語法錯誤。抽象的理解,沒有對此次程式設計做大面上的觀察。逆向思維的運用,最後,就是個人對基本的規範和規則不熟練,不清

Cocos2dx3.2從零開始【Cocos2d-x 3.2專案建立和編譯,移植到Android

最近決定入手Cocos2d-x 3.2。目前最新版。 起初糾結於Cocos2d 還是Unity3d,後來糾結於Cocos2d-x 2.x還是Cocos2d-x 3.x。 遇到問題記錄。 一、建立Coc

使用JAVA寫的一個簡易TCP通訊程式

好記性不如賴筆頭………… 使用TCP測試通訊時,注意必須 先啟動服務端,否則客戶端會報錯。因為TCP是需要三次握手的協議,如果伺服器沒有啟動,握手失敗,就會提示“連線異常”的錯誤 而UDP就沒有這個問題,因為它是一種廣播式的協議,在傳送資訊前,它不會去檢查伺