[討論] 可以不要再手刻Makefile 改用cmake, meson不好嗎
#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,
2年前
, 1F
03/14 15:40, 1F
Bazel語法沒法理解,我覺得bazel更像bitbake了。
推
03/14 15:50,
2年前
, 2F
03/14 15:50, 2F
大哥,貓王死了啊。九十年代過了
推
03/14 16:04,
2年前
, 3F
03/14 16:04, 3F
Windows派是吧,多來幾個你試看看,還有你多來幾個C++ ABI
推
03/14 16:18,
2年前
, 4F
03/14 16:18, 4F
docker只能幫你準備environment,這些不基本上不用來準備environment的
※ 編輯: hizuki (192.147.44.15 美國), 03/14/2023 16:24:58
→
03/14 16:27,
2年前
, 5F
03/14 16:27, 5F
其實就在本版上面一點,我補上了
推
03/14 16:48,
2年前
, 6F
03/14 16:48, 6F
→
03/14 16:49,
2年前
, 7F
03/14 16:49, 7F
有些是拿Makfile改的,那已經夠吐血了。
※ 編輯: hizuki (192.147.44.15 美國), 03/14/2023 17:20:35
→
03/14 17:28,
2年前
, 8F
03/14 17:28, 8F
→
03/14 17:29,
2年前
, 9F
03/14 17:29, 9F
→
03/14 17:30,
2年前
, 10F
03/14 17:30, 10F
→
03/14 17:31,
2年前
, 11F
03/14 17:31, 11F
→
03/14 17:32,
2年前
, 12F
03/14 17:32, 12F
→
03/14 17:44,
2年前
, 13F
03/14 17:44, 13F
推
03/14 17:47,
2年前
, 14F
03/14 17:47, 14F
推
03/14 17:48,
2年前
, 15F
03/14 17:48, 15F
→
03/14 17:49,
2年前
, 16F
03/14 17:49, 16F
→
03/14 17:51,
2年前
, 17F
03/14 17:51, 17F
→
03/14 17:56,
2年前
, 18F
03/14 17:56, 18F
→
03/14 17:56,
2年前
, 19F
03/14 17:56, 19F
→
03/14 18:02,
2年前
, 20F
03/14 18:02, 20F
→
03/14 18:02,
2年前
, 21F
03/14 18:02, 21F
Web如果是Java的話,老老實實用maven gradle。我們不需要package management。
我們的環境是要用linker的,麥類比。
推
03/14 19:37,
2年前
, 22F
03/14 19:37, 22F
推
03/14 19:40,
2年前
, 23F
03/14 19:40, 23F
→
03/14 23:11,
2年前
, 24F
03/14 23:11, 24F
→
03/14 23:43,
2年前
, 25F
03/14 23:43, 25F
→
03/14 23:43,
2年前
, 26F
03/14 23:43, 26F
推
03/15 00:03,
2年前
, 27F
03/15 00:03, 27F
meson已經足夠了,xmake反而是中國式的All in One
推
03/15 00:05,
2年前
, 28F
03/15 00:05, 28F
setuptool沒有什麼問題
推
03/15 00:41,
2年前
, 29F
03/15 00:41, 29F
→
03/15 01:02,
2年前
, 30F
03/15 01:02, 30F
還有 35 則推文
還有 8 段內文
→
03/16 09:35,
2年前
, 66F
03/16 09:35, 66F
→
03/16 09:39,
2年前
, 67F
03/16 09:39, 67F
→
03/16 09:40,
2年前
, 68F
03/16 09:40, 68F
→
03/16 09:41,
2年前
, 69F
03/16 09:41, 69F
→
03/16 09:44,
2年前
, 70F
03/16 09:44, 70F
→
03/16 10:00,
2年前
, 71F
03/16 10:00, 71F
→
03/16 10:00,
2年前
, 72F
03/16 10:00, 72F
推
03/16 15:08,
2年前
, 73F
03/16 15:08, 73F
→
03/16 15:08,
2年前
, 74F
03/16 15:08, 74F
推
03/16 16:39,
2年前
, 75F
03/16 16:39, 75F
→
03/16 16:39,
2年前
, 76F
03/16 16:39, 76F
→
03/16 17:48,
2年前
, 77F
03/16 17:48, 77F
→
03/16 17:50,
2年前
, 78F
03/16 17:50, 78F
tensorflow是逃不掉的,語法真的很可怕。所幸lite改cmake了
→
03/16 17:53,
2年前
, 79F
03/16 17:53, 79F
→
03/16 17:54,
2年前
, 80F
03/16 17:54, 80F
Google就是愛推。但是Google這個渣男,Android又推go plugin(soong)來生成構建規則,
而Android app卻又是gradle那一套。
→
03/16 17:55,
2年前
, 81F
03/16 17:55, 81F
→
03/16 17:55,
2年前
, 82F
03/16 17:55, 82F
→
03/16 17:57,
2年前
, 83F
03/16 17:57, 83F
推
03/16 19:26,
2年前
, 84F
03/16 19:26, 84F
→
03/16 20:55,
2年前
, 85F
03/16 20:55, 85F
→
03/16 20:57,
2年前
, 86F
03/16 20:57, 86F
→
03/16 20:58,
2年前
, 87F
03/16 20:58, 87F
我很想把這個KISS趕走
推
03/17 02:11,
2年前
, 88F
03/17 02:11, 88F
推
03/17 05:53,
2年前
, 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,
2年前
, 90F
03/17 16:07, 90F
→
03/17 16:07,
2年前
, 91F
03/17 16:07, 91F
→
03/17 17:08,
2年前
, 92F
03/17 17:08, 92F
→
03/17 17:13,
2年前
, 93F
03/17 17:13, 93F
→
03/17 17:15,
2年前
, 94F
03/17 17:15, 94F
→
03/17 17:16,
2年前
, 95F
03/17 17:16, 95F
→
03/17 17:17,
2年前
, 96F
03/17 17:17, 96F
→
03/17 17:20,
2年前
, 97F
03/17 17:20, 97F
推
03/18 18:07,
2年前
, 98F
03/18 18:07, 98F
推
03/20 17:20,
2年前
, 99F
03/20 17:20, 99F
推
03/21 14:12,
2年前
, 100F
03/21 14:12, 100F
→
03/21 14:13,
2年前
, 101F
03/21 14:13, 101F
Soft_Job 近期熱門文章
41
133
PTT職涯區 即時熱門文章