[討論] 可以不要再手刻Makefile 改用cmake, meson不好嗎

看板Soft_Job (軟體人)作者 (真女主角愛與正義的天使)時間1年前 (2023/03/14 15:07), 1年前編輯推噓24(24077)
留言101則, 28人參與, 1年前最新討論串1/1
#1a1f6YB1 (Soft_Job) [ptt.cc] Fw: [問卦] C++到底難學在哪? : 推 wizmelo: 我覺得C++一開始CMake建置環境就會勸退很多人 然後報錯 03/09 09:22 : → wizmelo: 的異常很難看懂 導入別的包使用function 也寫的很難讓人 03/09 09:22 : → wizmelo: 看懂 如果以一個沒使用過的人來說 03/09 09:22 : 推 ko27tye: 沒跨平台需求老實說make夠用了 03/09 13:19 : 推 wulouise: cmake比make簡單,但是要是不懂make有時候出問題,難查 03/10 22:57 : → superpandal: go的很不統一 import個包要全網址 03/13 17:36 : → superpandal: 原生makefile比cmake好多了 簡潔有力 03/13 17:38 : → superpandal: 而且現在一堆這樣的都很肥大cmake meson都是 03/13 17:39 : → superpandal: 裝一裝一堆沒用到的語言都裝上去 03/13 17:40 : → superpandal: 當然都可以用shell來產makefile就像 03/13 17:49 : → superpandal: cmake configure那種亂寫的除外 03/13 17:50 我非常同意CMake的報錯信息難看懂,所以我都改用meson了。 先不戰CMake和meson Makefile不是不可以跨平臺,如FFmpeg。我也不是完全反對Makefile, kernel, buildroot(openwrt),最上層用用Makefile還行。不過後者我改 OpenEmbedded了。 我們先不講跨平臺,C++一個header編譯到懷疑人生的久,不用PCH處理早晚吐血。 你試看看Makefile寫個recipe來處理。 很多人Makeilfe的link規範寫不對盤,bsd linker, gold linker, lld,最老的bsd隨便你 寫順序都能link上。後面要速度換了一個。 結果一個shared library A依賴shared library B。你構建target的時候,B寫在A的前面了, 馬上gold linker報錯。 static library不是當作object輸入的,當作一個library,結果死活有一個symbol unresolve。 還有很多肚爛的的先把objects全部都archive,然後再製造出executable或者shared library。 突然提示symbol unresolve,幾百個objects我要在長長的log中找出來哪個symbol。 為什麼compiling的時候不提示?因為header file中有這個declaration,結果symbol的 definition完全不同。 又為什麼會這樣呢?因為Makefile的cflags, cxx flags和ld flags這些傳遞都是沒有保障的, 可能莫名奇妙的被另外一個file給override了。後面的target全部死光光。 meson雖然沒有明顯區分local variable和global的,但是這些flags是可以一個target一個 設定的。CMake有個非常複雜的naming scope機制,我基本上理解到放棄。 另外就是所謂的options功能了,每次都重新編譯大項目沒幾個人受得了。而Makefile的 string解析真是爛,要call shell來又可能會造成env和本地變數衝突,語法可能有不正確的 解析。 以上都是工作中的碎碎念。實際的場景比這個更複雜 -- 你比較喜歡哪一個? 當年不是黨國大老但是被江浙財團捧紅的中國帥哥 跟同樣擁兵一方的諸侯約會裁軍結果半途諸侯們爽約,平常有在寫日記的莊嚴男人開始發飆 在旁邊讀著荒漠甘泉冷眼旁觀看著薔薇戰爭的人,為了中國的事情爭吵 別國調侃是不是中國總統,義正詞嚴的說著我是民族的燈塔的威嚴老先生 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 192.147.44.15 (美國) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1678777673.A.15D.html

03/14 15:40, 1年前 , 1F
都用Bazel
03/14 15:40, 1F
Bazel語法沒法理解,我覺得bazel更像bitbake了。

03/14 15:50, 1年前 , 2F
autoconf 很好用啊
03/14 15:50, 2F
大哥,貓王死了啊。九十年代過了

03/14 16:04, 1年前 , 3F
我常常都用動態DllImport比較懶XD
03/14 16:04, 3F
Windows派是吧,多來幾個你試看看,還有你多來幾個C++ ABI

03/14 16:18, 1年前 , 4F
docker 萬用解
03/14 16:18, 4F
docker只能幫你準備environment,這些不基本上不用來準備environment的 ※ 編輯: hizuki (192.147.44.15 美國), 03/14/2023 16:24:58

03/14 16:27, 1年前 , 5F
題外話,好奇你引用的那些留言串出自那篇文章呀
03/14 16:27, 5F
其實就在本版上面一點,我補上了

03/14 16:48, 1年前 , 6F
你這些都還好, 有些公司有自己內部的make系統, 完全沒有
03/14 16:48, 6F

03/14 16:49, 1年前 , 7F
詳細的使用說明, build報錯只能猜或自己做實驗試
03/14 16:49, 7F
有些是拿Makfile改的,那已經夠吐血了。 ※ 編輯: hizuki (192.147.44.15 美國), 03/14/2023 17:20:35

03/14 17:28, 1年前 , 8F
這不就是專案規範的鍋 靜態的是打包所有object沒錯
03/14 17:28, 8F

03/14 17:29, 1年前 , 9F
object沒錯 用shell不是指在makefile裡用 而是如同co
03/14 17:29, 9F

03/14 17:30, 1年前 , 10F
用 而是如同configure 但不會是如此糟糕的寫法
03/14 17:30, 10F

03/14 17:31, 1年前 , 11F
的寫法 makefile本身就不適合動態 而shell
03/14 17:31, 11F

03/14 17:32, 1年前 , 12F
shell很動態 本身還是個web仔就是
03/14 17:32, 12F

03/14 17:44, 1年前 , 13F
不過如果慢可以多job 或不用c++ XD
03/14 17:44, 13F

03/14 17:47, 1年前 , 14F
確實 有維護過 舊的Makefile...
03/14 17:47, 14F

03/14 17:48, 1年前 , 15F
上面那串是表示私下研究覺得相關的都太臃腫
03/14 17:48, 15F

03/14 17:49, 1年前 , 16F
臃腫 cmake meson都是
03/14 17:49, 16F

03/14 17:51, 1年前 , 17F
反正我都自己寫shell框架了
03/14 17:51, 17F

03/14 17:56, 1年前 , 18F
cmake本身都是生出makefile或在win下可能是vs專案
03/14 17:56, 18F

03/14 17:56, 1年前 , 19F
能是vs專案
03/14 17:56, 19F

03/14 18:02, 1年前 , 20F
躺平的web仔 但shell功力越來越出神入化了
03/14 18:02, 20F

03/14 18:02, 1年前 , 21F
03/14 18:02, 21F
Web如果是Java的話,老老實實用maven gradle。我們不需要package management。 我們的環境是要用linker的,麥類比。

03/14 19:37, 1年前 , 22F
我寫的東西不夠大,自己刻 Makefile 還蠻好用的
03/14 19:37, 22F

03/14 19:40, 1年前 , 23F
我都用qmake
03/14 19:40, 23F

03/14 23:11, 1年前 , 24F
老哥 你內行的誒... 直接丟出去給別人解就好啦
03/14 23:11, 24F

03/14 23:43, 1年前 , 25F
工具本身設計可能確實是會導致最終變得難用...不過也有
03/14 23:43, 25F

03/14 23:43, 1年前 , 26F
蠻多時候是使用者的問題...
03/14 23:43, 26F

03/15 00:03, 1年前 , 27F
可以用用看xmake
03/15 00:03, 27F
meson已經足夠了,xmake反而是中國式的All in One

03/15 00:05, 1年前 , 28F
我只會用python寫建置腳本
03/15 00:05, 28F
setuptool沒有什麼問題

03/15 00:41, 1年前 , 29F
看大小吧.....殺雞不用牛刀 牛刀也要磨很久啊
03/15 00:41, 29F

03/15 01:02, 1年前 , 30F
給你倚天劍和屠龍刀你要選哪個? 都是利器
03/15 01:02, 30F
還有 35 則推文
還有 8 段內文
03/16 09:35, 1年前 , 66F
最終目標也都是生成makefile
03/16 09:35, 66F

03/16 09:39, 1年前 , 67F
基本上你寫個腳本也叫cmake 針對專案文件
03/16 09:39, 67F

03/16 09:40, 1年前 , 68F
件也做差不多的事情結果也差不多
03/16 09:40, 68F

03/16 09:41, 1年前 , 69F
不用額外裝一堆東西是好處
03/16 09:41, 69F

03/16 09:44, 1年前 , 70F
然後腳本也佔不了幾k容量
03/16 09:44, 70F

03/16 10:00, 1年前 , 71F
至於純寫makefile也不是不可以 只是架構要精美
03/16 10:00, 71F

03/16 10:00, 1年前 , 72F
要精美
03/16 10:00, 72F

03/16 15:08, 1年前 , 73F
推e大 後人總是跟據前面問題開發新工具 但更多時候
03/16 15:08, 73F

03/16 15:08, 1年前 , 74F
舊系統無法遷移
03/16 15:08, 74F

03/16 16:39, 1年前 , 75F
驚 原來現在還有沒用Bazel的嗎?2017年入職轉到現在三個
03/16 16:39, 75F

03/16 16:39, 1年前 , 76F
公司都是用Bazel
03/16 16:39, 76F

03/16 17:48, 1年前 , 77F
bazel更扯 連java都裝上了 那跑起來很恐佈
03/16 17:48, 77F

03/16 17:50, 1年前 , 78F
佈 大機率是某個java派主導的 看了一下優點...
03/16 17:50, 78F
tensorflow是逃不掉的,語法真的很可怕。所幸lite改cmake了

03/16 17:53, 1年前 , 79F
優點 這就... makefile都可以include 雖然動態性
03/16 17:53, 79F

03/16 17:54, 1年前 , 80F
然動態性不是太好 但節省設定是可以的
03/16 17:54, 80F
Google就是愛推。但是Google這個渣男,Android又推go plugin(soong)來生成構建規則, 而Android app卻又是gradle那一套。

03/16 17:55, 1年前 , 81F
再搭其它小工具如ccache就可以了
03/16 17:55, 81F

03/16 17:55, 1年前 , 82F
即便沒有cache也是編譯有改的
03/16 17:55, 82F

03/16 17:57, 1年前 , 83F
拿來管理java專案或許不錯
03/16 17:57, 83F

03/16 19:26, 1年前 , 84F
推推 只知道makefile 看了文章覺得長知識
03/16 19:26, 84F

03/16 20:55, 1年前 , 85F
這是長常識 千言萬語抵不過體驗
03/16 20:55, 85F

03/16 20:57, 1年前 , 86F
現在看來很多工具真的意義不大
03/16 20:57, 86F

03/16 20:58, 1年前 , 87F
繼續遵守unix原教旨
03/16 20:58, 87F
我很想把這個KISS趕走

03/17 02:11, 1年前 , 88F
cmake有很難用?我覺得modern cmake其實還可以。
03/17 02:11, 88F

03/17 05:53, 1年前 , 89F
樓上你老了 (上次我說跟你一樣的話時別人也這樣講我)
03/17 05:53, 89F
modern cmake的問題是沒有阻止舊語法,和C++一樣我弄不清究竟要怎麼寫。 而且cmake真心的慢 ※ 編輯: hizuki (192.147.44.15 美國), 03/17/2023 15:00:13

03/17 16:07, 1年前 , 90F
mason最煩的是舊環境要支援很麻煩
03/17 16:07, 90F

03/17 16:07, 1年前 , 91F
不過現在還是很多專案還在用automake
03/17 16:07, 91F

03/17 17:08, 1年前 , 92F
kiss非常好 其實並不傻
03/17 17:08, 92F

03/17 17:13, 1年前 , 93F
主要都是cmake又更複雜了 動態性也沒高太多
03/17 17:13, 93F

03/17 17:15, 1年前 , 94F
太多 shell更動態 makefile用include也不錯
03/17 17:15, 94F

03/17 17:16, 1年前 , 95F
不錯 很多人講不要拿shell搞大工程
03/17 17:16, 95F

03/17 17:17, 1年前 , 96F
但其實很熟了也未嘗不可 也有好處
03/17 17:17, 96F

03/17 17:20, 1年前 , 97F
當然不是指oneliner
03/17 17:20, 97F

03/18 18:07, 1年前 , 98F
project沒很大的話scons用起來最爽
03/18 18:07, 98F

03/20 17:20, 1年前 , 99F
看了就累 幸好不怎麼寫cpp了...
03/20 17:20, 99F

03/21 14:12, 1年前 , 100F
我目前寫小專案還是用Makefile,遇到的問題都還沒你說的多
03/21 14:12, 100F

03/21 14:13, 1年前 , 101F
真的嚇人
03/21 14:13, 101F
文章代碼(AID): #1a41r95T (Soft_Job)
文章代碼(AID): #1a41r95T (Soft_Job)