SlideShare a Scribd company logo
1 of 106
Download to read offline
GNU Make, Autotools, 
CMake ⡆௓ 
Wen Liao
Disclaimer 
ᢞᙳ∦㈨ᩱⅭస⪅ᩚ⌮㈨ᩱཬಶேពぢ䠈ἄ᭷⥂ 
㐣ᄫㅽ☜ㄆ䠈ㄳㆫ⪅⮬⾜᩵㓃
┠ᶆ 
● ⡆௓GNU Make, Autotools, ࿴CMake 
○ Autotools࿴CMake㒊௷ᴟᗘ⡆௓
 ヨ⎔ቃ
Outline 
● GNU Make 
● Autotools 
● CMake 
● ཨ⪃㈨ᩱ 
● Q & A
஦ඛ‽ഛ 
● Ⅽ஢ᝍⓗ⏕άᖾ⚟⨾⁹䠈ㄳ☜ㄆ⦅㍴ჾᨭ᥼㢷 
♧✵ⓑᏐඖ࿴<tab>Ꮠඖ! 
geany: 
<tab> trailing space 
vim:
㜝᪊GNU Make 
● man make 
○ GNU make utility to maintain groups of programs 
○ ???
┤᥋┳౛Ꮚ 
ᛠ㯟⦅㆞?
⡆ႝ䠈gcc hello.c
ຍ☞䠈㏺ಶᛠ㯟⦅㆞?
GG! 㑏せຍinclude Path
㑣㯟ୖⓒಶ᷐᱌ᛠ㯟㎨䠛ᡴ฿Ṛ䠛
ᑙ᱌᷐᱌㔞኱⦅㆞ⓗၥ㢟 
● ᡃ⬟୙⬟ᡴ୍⾜ᣦ௧ᑵᖳᡃ⮬ື⦅㆞? 
● ᡃ⬟୙⬟ྈ⦅㆞᭦ື㐣ⓗ᷐᱌? 
○ ໟྵᨵ஢*.h᷐᱌ᑞ᠕*.c㒔ྍ௨⮬ື㔜⦅ 
● ྍ୙ྍ௨᭷ἄ᭷㟰άⓗ⦅㆞⤌ែ? 
○ タᐃdebug mode㑏᫝release mode 
○ タᐃ⦅㆞ჾ㑅㡯 
○ Compile timeᣦᐃᕧ㞟 
■ -DMY_VAR=1 
○ ...
Yes You Can!
㜝᪊GNU Make 
● man make 
○ The purpose of the make utility is to 
determine automatically which pieces of a 
large program need to be recompiled, 
and issue the commands to recompile 
them. 
○ ⓑヰ: ༠ຓ⦅㆞ⓗ᫬ೃỴᐃ 
■ 㑣㒊௷せ㔜⦅ 
■ ᣦᐃ㔜᪂⦅㆞ⓗືస
Hello Makefile 
target prerequisites 
recipe ୍ᐃせ<tab>㛤㢌! 
௨ୗ᝟ἣ᭳ᇳ⾜recipe 
● ᪂ቔ䠖target᷐᱌୙Ꮡᅾ 
○ ㏻ᖖtarget᫝୍ಶ᷐᱌䠈ణ᫝㏺୙᫝ᚲせᲄ௳ 
● ᭦᪂䠖prerequisites᷐᱌᭦ື᫬㛫ẚtarget᷐ 
᱌㑏せ᪂
ㄡ說Makefile୍ᐃせ⦅㆞᷐᱌? 
target prerequisites 
୍㛤ጞྈ᭷Makefile䠈ୗmakeฟ⌧㘒ㄗ說↓ἲ產⏕dep_file 
產⏕dep_fileᚋ᭳ᇳ⾜@echo Test 
產⏕test_fileᑵ୙ᇳ⾜@echo Test 
᭦᪂dep_file ᭦ື᫬㛫ᚋ᭳ᇳ⾜@echo Test 
recipe
ᶞ≪target 
● ➨୍ಶtarget✃Ⅽdefault target䠈ஓ᫝makeⓗ㐍ධ㯶䚹 
● @⾲♧୙せᢕᣦ௧༳ฟ䠈ྍ௨⦎⩦ᢕ௚ᣡᤶ┳┳䚹 
● $@ᒎ㛤ᚋ᫝targetⓗྡ✃
ㄳẚᑞୖ㡫䠈やᐹ㡰ᗎ䟿
ㆰᩝ 
● タᐃ 
○ VAR = VAL 
○ VAR := VAL 
○ VAL ?= VAL 
○ VAR += VAL 
○ ඼௚ᡃ୙᠐ⓗ 
● タᐃ᫬ᶵ 
○ ᷐᱌䠈㏻ᖖᑵ᫝Makefile內 
○ make ࿨௧ⓗཨᩝ 
○ ⎔ቃㆰᩝ 
● ྲྀ值 
○ $(VAR)
VAR = VAL 
VAR := VAL 
VAL ?= VAL 
VAR += VAL
୕ᑠ䠛
ㆰᩝタᐃ: 㐃ືᆺ = 
VAR1 ➨୍ḟタᐃ 
VAR2 ⓗ值࿴VAR1┦ྠ 
༳ฟVAR2ⓗ內ᐜ 
VAR1 ➨஧ḟタᐃ 
෌༳ฟVAR2ⓗ內ᐜ
ඳḟVAR2ⓗ內ᐜ䠈᭳㞉VAR1ᨵㆰ
ㆰᩝタᐃ䠖❧้⏕ᩀᆺ := 
ྈᨵ㏺⾜䠈ᢕ = ᨵᡂ :=
GNU Make, Autotools, CMake 簡介
ㆰᩝタᐃ: 㡸タᆺ ?=
GNU Make, Autotools, CMake 簡介
ㆰᩝタᐃ䠖ຍ☞ᆺ +=
GNU Make, Autotools, CMake 簡介
ᑠ⤖ 
タᐃ ⌮ゎ᪉ᘧ 
VAR = VAL 㐃ືᙧ 
VAR := VAL ❧༶⏕ᩀᙧ 
VAL ?= VAL 㡸タᙧ 
VAR += VAL ຍ☞ᙧ 
඼௚ᡃ୙᠐ⓗ ୙᠐ⓗ୙▱㐨ᛠ㯟ゎ㔚
內ᘓㆰᩝ (⠇㗴) 
ྡ✃ ព⩏ 
$@ targetྡ✃ 
$^ ᡤ᭷ⓗprerequisitesྡ✃ 
$< ➨୍ಶprerequisiteྡ✃ 
⏝㏵அ୍䠖 
target: dep1.c inc.h test.h 
<tab> gcc -o $@ $< 
$? ẚtarget㑏᪂ⓗprerequisitesྡ✃
⠊౛ 
タᐃせ產⏕ⓗᇳ⾜᷐ 
タᐃせ⦅㆞ⓗ⛬ᘧ᷐ 
⦅㆞ཨᩝ 
ᒎ㛤ㆰᩝ䠈౫ᒎ㛤ⓗ 
ㆰᩝ⦅㆞᷐᱌ 
Ύ㝖產⏕ⓗ᷐᱌つ๎
┠㗴ୗ᭷ཎጞ᷐࿴Makefile 
⦅㆞᭷ᒎ㛤ㆰᩝ୪ᣦᐃᑞ 
᠕᷐᱌┠㗴ୗ᭷ཎጞ᷐࿴ 
Makefile 
ᇳ⾜᷐ᕬ⥂產⏕ 
Ύ㝖ᇳ⾜᷐୪㔜᪂⦅㆞
ᲄ௳ุ᪇⠊౛ 
LOGNAME᫝⎔ቃㆰᩝ!
LOGNAME᫝⎔ቃㆰᩝ! 
ே⫗タᐃLOGNAME內ᐜ
function⠇㗴 
● ㄒἲ 
○ $(ภᩝྡ✃ ཨᩝ) 
ศ㢮 ภᩝྡ✃ 說᫂ ⠊౛ (ㄳ㈞฿Makefileᐿ !) 
イᜥ 
$(waring イᜥ) 㢷♧㆙࿌イᜥ௨ཬᑞ᠕ⓗ⾜⹰ $(warning Your gcc version is too old) 
$(error イᜥ) 㢷♧㘒ㄗイᜥ䚸ᑞ᠕ⓗ⾜⹰ᚋ⤖᮰ 
make 
conf=my_file 
$(error file $(conf) not found) 
Ꮠ୵ 
⹦⌮ 
$(subst from,to,⹦⌮ᩥᏐ) Ꮠ୵᭰᥮,ᚋ㠃✵ⓑⅭཨᩝⓗ୍㒊௷ $(warning $(subst .c,.o,test.c hello.c)) 
$(patsubst pattern,᭰᥮ᩥᏐ,⹦⌮ᩥᏐ) patternᏐ୵᭰᥮,ᚋ㠃✵ⓑⅭཨᩝⓗ୍ 
㒊௷䚹%௦⾲௵ព㛗ᗘⓗ௵ពᏐඖ䚹 
$(warning $(patsubst t%.c,a%.o,test.c 
hello.c)) 
඼௚ $(shell ࿨௧) ᇳ⾜࿨௧䠈ᅇബᩥᏐ⤖ᯝ $(warning $(shell ls /))
㐃⧰ᢏ 
● OBJS=$(patsubst %.c,%.o,$(shell ls *.c))
ᖖぢ㘒ㄗ䠖ẗಶrecipe ᇳ⾜≪ែ୙ᘏ⧰ 
㐀ᡂⓗᝒ๻ 
⠊౛䠖ᘓ❧୍ಶ┠㗴䠈㐍ධヱ┠㗴๓ᚋ 
༳ฟ┠๓ᕤస┠㗴☜ㄆษ᥮┠㗴ᡂຌ
㛤⊼䠈ἄ᭷ษ᥮฿test┠㗴
✽Ꮿ┳ⓗ䠈ྍ௨┳฿make⹦⌮recipeⓗ 
᪉ᘧ᫝產⏕᪂ⓗprocess䠈ᇳ⾜recipe䠈 
↛ᚋ⤖᮰ヱprocess 
$ strace -f make 
vfork(Process 8949 attached (waiting for parent) 
Process 8949 resumed (parent 8947 ready) 
) = 8949 
[pid 8949] execve("/bin/mkdir", ["mkdir", "-p", "test"], 
[/* 42 vars */]) = 0 
<... wait4 resumed> [{WIFEXITED(s) && 
WEXITSTATUS(s) == 0}], 0, NULL) = 8949 
--- SIGCHLD (Child exited) @ 0 (0) ---
ᑠ⤖ 
● GNU make: ༠ຓ⦅㆞ⓗ᫬ೃỴᐃ 
○ 㑣㒊௷せ㔜⦅ 
○ ᣦᐃ㔜᪂⦅㆞ⓗືస 
● ᡤ௨ᑃMakefile䠈୺せᥥ㏙ 
○ 產⏕᷐᱌࿴ཎጞ᷐ⓗ㜝⫃ᛶ 
○ ␜㏺ல᷐᱌᭦ື᫬㛫㜝ಀ᭷ㆰ໬ⓗ᫬ೃ䠈ヱ 
೴ொ㯟஦?
⿵඘1: ἄ᭷Makefileⓗmake 
┠๓┠㗴ἄ᭷Makefile 
↷ᶏmakeქქ 
↷ᶏmake++
Implicit Rules 
୕ᑠ䠛
make -p 
CPP㏺㑔ྍ୙᫝C++䠈᭷ 
⯆㊃man cpp 
㑏グᚓㆰᩝႫ䠛
make -p (᥋㜝䠅 
make᭷內ᘓ㡸タⓗ⹦⌮つ๎䠈ㄳ࿴ୖ㡫ㆰᩝ௨ཬ๓㠃ⓗㄒ 
ἲᑞ↷
⿵඘2: .PHONY 
⠊౛Makefile䠈ໟྵ產⏕binary࿴Ύ㝖binary
⋵┳┳ 
Ύ㝖binary 
產⏕᪂᷐䠈ྡ✃Ⅽclean 
᷐᱌cleanᏑᅾ䠈↓ἲΎ㝖binary 
ᚲ㡲฽㝖᷐᱌cleanᡯ⬟ᇳ⾜target
ศᯒ 
● recipe ⓗᇳ⾜࿴target௨ཬprerequisites᷐᱌ 
᫬㛫㈨イ᭷㜝 
● cleanⓗ┠ⓗ୪୙᫝せ產⏕clean᷐᱌䠈ஓᑵ᫝ 
說targetᇳ⾜recipe࿴target᫝ྰⅭ᷐᱌↓㜝
.PHONY 
● ࿴᷐᱌↓㜝ⓗtarget 
● ⏝ἲ 
.PHONY: ௨✵ⓑ㝸㛤ⓗTARGETྡ✃ 
● ⠊౛ 
.PHONY: clean install
ಟṇ 
.PHONYᅾ㏺㑔
┳┳ᩀᯝ
ᘏఙ㢟ᮦ/ᅇᐙຌㄢ 
● ዴఱ⮬ື㐍ධ୙ྠ┠㗴Make? 
● ዴఱ⮬ື產⏕C source᷐࿴Header᷐᱌rule? 
○ hello.c includes f1.h, f2.h䠈ඳኳᚋཪຍධf3.h䚹ᡭືᨵ 
ᚇ⣼䚹 
● ᭷ἄ᭷㎨ἲᢕᡤ᭷ⓗタᐃᨺᅾ᷐᱌內⤥ 
Makefile include?
๦ୗᑵ᫝⣽⠇䠈ㄳ⮬⾜ 
┳᭩䠈つ๸タィ⮬ᕫⓗ 
ᐿ⩦ㄢ䚹
Outline 
● GNU Make 
● Autotools 
● CMake 
● ཨ⪃㈨ᩱ 
● Q & A
」⩦䠖GNU Makeᑠ⤖ 
● GNU make: ༠ຓ⦅㆞ⓗ᫬ೃỴᐃ 
○ 㑣㒊௷せ㔜⦅ 
○ ᣦᐃ㔜᪂⦅㆞ⓗືస 
● ᡤ௨ᑃMakefile䠈୺せᥥ㏙ 
○ 產⏕᷐᱌࿴ཎጞ᷐ⓗ㜝⫃ᛶ 
○ ␜㏺ல᷐᱌᭦ື᫬㛫㜝ಀ᭷ㆰ໬ⓗ᫬ೃ䠈ヱ 
೴ொ㯟஦?
㑣㯟᭳ொ㯟㑏せ᭷autotools 
● ㊬ᖹྎⓗၥ㢟 
○ memset v.s. bzero 
○ ㊰ᚏ䚸᷐᱌୙ྠ 
○ system call୙ྠ 
● ྠᖹྎ 
○ ภᘧᗜ∧ᮏ୙ྠ䠈prototypeྍ⬟୙ྠ 
● ┦౫ᛶၥ㢟
autotools 
● autotoolⓗ┠ⓗᑵ᫝產⏕ᖹྎୖྍ௨⦅㆞ⓗ⎔ 
ቃ 
● Ⅽ஢㐩฿㏺ᶏⓗ┠ⓗ䠈⣔⤫㟂せ೴฿ୗ㠃ⓗຌ 
⬟ 
○ ᷙ查ᖹྎ⎔ቃ 
○ 產⏕Makefile
ὶ⛬ 
http://en.wikipedia.org/wiki/GNU_build_system#mediaviewer/File:Autoconf-automake-process.svg
http://en.wikipedia.org/wiki/GNU_build_system#mediaviewer/File:Autoconf-automake-process.svg
http://en.wikipedia.org/wiki/GNU_build_system#mediaviewer/File:Autoconf-automake-process.svg
ᚇ」㞯䠛ཱྀ㢌ㅮᑵ᫝ 
1. ⮬ᖿᡈ㊝ᕤලᚋ產⏕᭦ືconfigure. 
ac䠈࿴ᑃMakefile.am 
2. ㊝ᕤල產⏕configure, Makefile.in࿴ 
config.in 
3. ㊝configure䠈產⏕Makefile࿴config.h 
4. make; make install
㑏୙᠐䠛౗┳⠊౛ 
఼せᑃⓗᮾす
autoreconfᖳ఼࿧ྉ┦㜝ᕤ 
ලዴaclocal, autoconf, 
automake➼
產⏕ฟ౗ⓗ᷐᱌
產⏕ฟ౗ⓗ᷐᱌
configure.ac 
# せồ∧ᮏ 
AC_PREREQ([2.68]) 
# ዓ௳㈨イ 
AC_INIT([Test_Autotools], [0], [test]) 
# ⤥Automake㈨イ䠈foreign⾲♧୙⏝GNUᶆ‽ 
# ஓᑵ᫝୙㟂せchangelog, AUTHORS➼᷐᱌ 
AM_INIT_AUTOMAKE([foreign -Wall -Werror])
configure.ac 
# config᷐᱌ 
AC_CONFIG_HEADERS([config.h]) 
# ᮏḟdemo౑⏝ static library 
AC_PROG_RANLIB 
# Makefile ㊰ᚏ 
AC_CONFIG_FILES([Makefile src/Makefile 
libs/Makefile])
configure.ac 
# ᦏᑜCC ⦅㆞ჾ 
AC_PROG_CC 
# ⤖᮰config䠈㛤ጞ產⏕┦㜝᷐᱌ 
AC_OUTPUT
Makfile.am 
SUBDIRS = libs src
libs/Makefile.am 
# ᣦᐃinclude㊰ᚏ 
AM_CFLAGS = -I../include 
# 產⏕liba.a ࿴libb.b 
# lib_௦⾲Ᏻ⿶᫬せᨺᅾ$(prefix)/lib୰ 
# 㡸タprefix=/usr/local 
lib_LIBRARIES = liba.a libb.a
libs/Makefile.am 
# 產⏕liba.aⓗ┦౫᷐᱌ 
liba_a_SOURCES = liba.c liba.h 
# 產⏕libb.aⓗ┦౫᷐᱌ 
libb_a_SOURCES = libb.c libb.h 
# Ᏻ⿶฿$(prefix)/includeⓗ᷐᱌ 
include_HEADERS = ../include/liba.h .. 
/include/libb.h
src/Makefile.am 
# ᣦᐃlinkီலlibrary 
LDADD = ../libs/liba.a ../libs/libb.a 
# ᣦᐃinclude㊰ᚏ 
AM_CFLAGS = -I../include
src/Makefile.am 
# Ᏻ⿶฿$(prefix)/bin 
bin_PROGRAMS = test 
# 產⏕ⓗ᷐᱌┦౫ⓗ᷐᱌ 
test_SOURCES = test.c
● configure 
● make 
● make install 
● make dist # ⮬ືᖳ఼ᡴໟtarball
GNU Make, Autotools, CMake 簡介
GNU Make, Autotools, CMake 簡介
GNU Make, Autotools, CMake 簡介
GNU Make, Autotools, CMake 簡介
ᑠ⤖ 
● ౑⏝autotools㟂せ⮬ᕫᑃ 
○ configure.ac 
○ Makefile.am 
● ୖ㠃ⓗ⠊౛ᴟᗘ⡆␎
ᘏఙ㢟ᮦ/ᅇᐙຌㄢ 
● ዴఱ產⏕shared library? 
● ᫝ྰ᭷᭦⫄᫂ⓗlibrary產⏕᪉ᘧ䠛 
○ hint: libtools
๦ୗᑵ᫝⣽⠇䠈ㄳ⮬⾜ 
┳᭩䠈つ๸タィ⮬ᕫⓗ 
ᐿ⩦ㄢ䚹
Outline 
● GNU Make 
● Autotools 
● CMake 
● ཨ⪃㈨ᩱ 
● Q & A
㜝᪊CMake 
CMake᫝1999ᖺ᥎ฟⓗ㛤※⮬⏤㌾㧓ィ␓䠈┠ⓗ 
᫝ᥦ౪୙ྠᖹྎஅ㛫ඹྠⓗ⦅㆞⎔ቃ䚹 
≉ᛶ: 
● ᨭ᥼୙ྠᖹྎ 
● ྍ௨ᑘBuild࿴ཎᮏ⛬ᘧ☞ศ㛤 
○ out-place build 
○ in-place build 
● ᨭ᥼cacheຍᛌ⦅㆞㏿ᗘ
ὶ⛬ 
● ᧝ᑃCMakeLists.txt 
● ౑⏝⪅ᇳ⾜cmake 
○ 產⏕ヱᖹྎᑞ᠕ⓗ⦅㆞⎔ቃ᷐᱌ዴMakefile➼ 
● ౑⏝⪅ᇳ⾜ᖹྎୖⓗ⦅㆞᪉ἲ 
○ ዴmake 
● ౑⏝⪅ᇳ⾜cmake installᏳ⿶㌾㧓䚹
⠊౛ 
఼せᑃⓗᮾす
CMakeLists.txt 
# ∧ᮏ㟂ồ 
cmake_minimum_required(VERSION 2.8) 
# ఼ⓗProjectྡ✃ 
project(testcmake)
CMakeLists.txt 
# タᐃㆰᩝ 
set(SRC_DIR src) 
set(LIB_DIR libs) 
set(INC_DIR include) 
# Compile flags 
set(CMAKE_C_FLAGS "-Wall -Werror")
CMakeLists.txt 
# ᣦ௧include┠㗴 
include_directories(${INC_DIR}) 
# ࿌ッCMakeせཤୗิⓗ┠㗴⦅㆞ 
add_subdirectory(${SRC_DIR}) 
add_subdirectory(${LIB_DIR}) 
add_subdirectory(${INC_DIR})
libs/CMakeLists.txt 
# タᐃㆰᩝ䠈ᣦᐃlibrary┦౫᪊ီಶ᷐᱌ 
set(liba_SRCS liba.c) 
set(libb_SRCS libb.c) 
# ᣦᐃ⦅㆞ᆺᘧⅭshared library 
add_library(a SHARED ${liba_SRCS}) 
add_library(b SHARED ${libb_SRCS})
libs/CMakeLists.txt 
# Ᏻ⿶᱁ᘧ 
# install(TARGETS ภᘧᗜྡ✃ LIBRARY 
# DESTINATION Ᏻ⿶┠㗴㊰ᚏ) 
install(TARGETS a b LIBRARY 
DESTINATION lib)
src/CMakeLists.txt 
# タᐃㆰᩝ 
set(test_SRCS test.c) 
# 產⏕ᇳ⾜᷐ 
add_executable(${PROJECT_NAME} 
${test_SRCS}) 
# ᣦ௧linkภᘧᗜ 
target_link_libraries(${PROJECT_NAME} a b)
src/CMakeLists.txt 
# Ᏻ⿶᱁ᘧ 
# install(TARGETS ᇳ⾜᷐ྡ✃ 
# DESTINATION Ᏻ⿶┠㗴㊰ᚏ) 
install(TARGETS ${PROJECT_NAME} 
DESTINATION bin)
include/CMakeLists.txt 
# install(FILES Header᷐ྡ✃ 
# DESTINATION Ᏻ⿶┠㗴㊰ᚏ) 
install(FILES liba.h libb.h 
DESTINATION include)
out-place build
GNU Make, Autotools, CMake 簡介
GNU Make, Autotools, CMake 簡介
GNU Make, Autotools, CMake 簡介
GNU Make, Autotools, CMake 簡介
ᑠ⤖ 
● ఼せᑃCMakeLists.txt䠈ᣦᐃせ㐍ධီல┠㗴 
⦅㆞䠈ᡈ᫝┦㜝ⓗ᷐᱌௨ཬ㡸ᮇ⦅㆞࿴Ᏻ⿶ⓗ 
ᆺែ 
● ୖ㠃ⓗ⠊౛ᴟᗘ⡆␎
ᘏఙ㢟ᮦ/ᅇᐙຌㄢ 
● ヲ⣽ㄒἲ 
○ ㆰᩝタᐃ 
○ ᲄ௳タᐃ 
○ ᕧ㞟࿴ภᩝ 
● ᡴໟ᪉ᘧ
๦ୗᑵ᫝⣽⠇䠈ㄳ⮬⾜ 
┳᭩䠈つ๸タィ⮬ᕫⓗ 
ᐿ⩦ㄢ䚹
Outline 
● GNU Make 
● Autotools 
● CMake 
● ཨ⪃㈨ᩱ 
● Q & A
ཨ⪃㈨ᩱ 
● GNU Makeᡭ෉ 
○ http://www.gnu.org/software/make/manual/make.html 
● GNU Make ᛌ㏿ཨ⪃ 
○ http://www.gnu.org/software/make/manual/make. 
html#Quick-Reference 
● GNU Automakeᡭ෉ 
○ http://www.gnu. 
org/software/automake/manual/automake.html 
● Alexandre Duret Lutz: Autotools Tutorial (኱ 
᥎) 
○ https://www.lrde.epita.fr/~adl/autotools.html
ཨ⪃㈨ᩱ 
● CMake Wiki 
○ http://www.cmake.org/Wiki/CMake 
● CMake-tutorial (኱᥎) 
○ https://github.com/TheErk/CMake-tutorial
Outline 
● GNU Make 
● Autotools 
● CMake 
● ཨ⪃㈨ᩱ 
● Q & A

More Related Content

What's hot

COSCUP2016 - LLVM框架、由淺入淺
COSCUP2016 - LLVM框架、由淺入淺COSCUP2016 - LLVM框架、由淺入淺
COSCUP2016 - LLVM框架、由淺入淺hydai
 
Lecture 07 virtual machine i
Lecture 07 virtual machine iLecture 07 virtual machine i
Lecture 07 virtual machine i鍾誠 陳鍾誠
 
並列プログラミング 入門!&おさらい!
並列プログラミング入門!&おさらい!並列プログラミング入門!&おさらい!
並列プログラミング 入門!&おさらい!道化師 堂華
 
Introduction to julia
Introduction to juliaIntroduction to julia
Introduction to julia岳華 杜
 
書くネタがCoqしかない
書くネタがCoqしかない書くネタがCoqしかない
書くネタがCoqしかないMasaki Hara
 
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性Hibiki Yamashiro
 
M5Stackで授業をやってみた
M5Stackで授業をやってみたM5Stackで授業をやってみた
M5Stackで授業をやってみたJunichi Akita
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門Hirotaka Kawata
 
Something About Dynamic Linking
Something About Dynamic LinkingSomething About Dynamic Linking
Something About Dynamic LinkingWang Hsiangkai
 
Compiler Optimization Presentation
Compiler Optimization PresentationCompiler Optimization Presentation
Compiler Optimization Presentation19magnet
 
10分で分かるRパッケージの作り方
10分で分かるRパッケージの作り方10分で分かるRパッケージの作り方
10分で分かるRパッケージの作り方Yohei Sato
 
Part II: LLVM Intermediate Representation
Part II: LLVM Intermediate RepresentationPart II: LLVM Intermediate Representation
Part II: LLVM Intermediate RepresentationWei-Ren Chen
 

What's hot (20)

COSCUP2016 - LLVM框架、由淺入淺
COSCUP2016 - LLVM框架、由淺入淺COSCUP2016 - LLVM框架、由淺入淺
COSCUP2016 - LLVM框架、由淺入淺
 
TMUX Rocks!
TMUX Rocks!TMUX Rocks!
TMUX Rocks!
 
from Source to Binary: How GNU Toolchain Works
from Source to Binary: How GNU Toolchain Worksfrom Source to Binary: How GNU Toolchain Works
from Source to Binary: How GNU Toolchain Works
 
Lecture 07 virtual machine i
Lecture 07 virtual machine iLecture 07 virtual machine i
Lecture 07 virtual machine i
 
PPT ON ALGORITHM
PPT ON ALGORITHMPPT ON ALGORITHM
PPT ON ALGORITHM
 
The Internals of "Hello World" Program
The Internals of "Hello World" ProgramThe Internals of "Hello World" Program
The Internals of "Hello World" Program
 
淺談探索 Linux 系統設計之道
淺談探索 Linux 系統設計之道 淺談探索 Linux 系統設計之道
淺談探索 Linux 系統設計之道
 
並列プログラミング 入門!&おさらい!
並列プログラミング入門!&おさらい!並列プログラミング入門!&おさらい!
並列プログラミング 入門!&おさらい!
 
Introduction to julia
Introduction to juliaIntroduction to julia
Introduction to julia
 
書くネタがCoqしかない
書くネタがCoqしかない書くネタがCoqしかない
書くネタがCoqしかない
 
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
 
LLVM introduction
LLVM introductionLLVM introduction
LLVM introduction
 
How A Compiler Works: GNU Toolchain
How A Compiler Works: GNU ToolchainHow A Compiler Works: GNU Toolchain
How A Compiler Works: GNU Toolchain
 
M5Stackで授業をやってみた
M5Stackで授業をやってみたM5Stackで授業をやってみた
M5Stackで授業をやってみた
 
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
 
Something About Dynamic Linking
Something About Dynamic LinkingSomething About Dynamic Linking
Something About Dynamic Linking
 
Compiler Optimization Presentation
Compiler Optimization PresentationCompiler Optimization Presentation
Compiler Optimization Presentation
 
10分で分かるRパッケージの作り方
10分で分かるRパッケージの作り方10分で分かるRパッケージの作り方
10分で分かるRパッケージの作り方
 
Part II: LLVM Intermediate Representation
Part II: LLVM Intermediate RepresentationPart II: LLVM Intermediate Representation
Part II: LLVM Intermediate Representation
 
系統程式 -- 第 7 章
系統程式 -- 第 7 章系統程式 -- 第 7 章
系統程式 -- 第 7 章
 

Similar to GNU Make, Autotools, CMake 簡介

CEDEC2014 Live Coding in C++
CEDEC2014 Live Coding in C++CEDEC2014 Live Coding in C++
CEDEC2014 Live Coding in C++Seiya Ishibashi
 
Coding with Vim
Coding with VimCoding with Vim
Coding with VimEnzo Wang
 
GDG DevFest Kyoto 2014 これからのGoの話をしよう
GDG DevFest Kyoto 2014 これからのGoの話をしようGDG DevFest Kyoto 2014 これからのGoの話をしよう
GDG DevFest Kyoto 2014 これからのGoの話をしようSatoshi Noda
 
Introduction of unit test on android kernel
Introduction of unit test on android kernelIntroduction of unit test on android kernel
Introduction of unit test on android kernelJohnson Chou
 
Compiler design notes phases of compiler
Compiler design notes phases of compilerCompiler design notes phases of compiler
Compiler design notes phases of compilerovidlivi91
 
Tomáš Čorej: Configuration management & CFEngine3
Tomáš Čorej: Configuration management & CFEngine3Tomáš Čorej: Configuration management & CFEngine3
Tomáš Čorej: Configuration management & CFEngine3Jano Suchal
 
Practical SystemTAP basics: Perl memory profiling
Practical SystemTAP basics: Perl memory profilingPractical SystemTAP basics: Perl memory profiling
Practical SystemTAP basics: Perl memory profilingLubomir Rintel
 
Unix shell talk - RIT SSE
Unix shell talk - RIT SSEUnix shell talk - RIT SSE
Unix shell talk - RIT SSEMatt Mokary
 
Getting started with open mobile development on the Openmoko platform
Getting started with open mobile development on the Openmoko platformGetting started with open mobile development on the Openmoko platform
Getting started with open mobile development on the Openmoko platformJean-Michel Bouffard
 
Basicsof c make and git for a hello qt application
Basicsof c make and git for a hello qt applicationBasicsof c make and git for a hello qt application
Basicsof c make and git for a hello qt applicationDinesh Manajipet
 
Not Your Fathers C - C Application Development In 2016
Not Your Fathers C - C Application Development In 2016Not Your Fathers C - C Application Development In 2016
Not Your Fathers C - C Application Development In 2016maiktoepfer
 
Trace kernel code tips
Trace kernel code tipsTrace kernel code tips
Trace kernel code tipsViller Hsiao
 
TinyMCE Editor - Rhythmyx: Powerful Website Management Platform
TinyMCE Editor - Rhythmyx: Powerful Website Management PlatformTinyMCE Editor - Rhythmyx: Powerful Website Management Platform
TinyMCE Editor - Rhythmyx: Powerful Website Management PlatformPercussion Software
 
Unix is my IDE
Unix is my IDEUnix is my IDE
Unix is my IDEtkramar
 
WordPress Plugin Development 201
WordPress Plugin Development 201WordPress Plugin Development 201
WordPress Plugin Development 201ylefebvre
 
Types - slice, map, new, make, struct - Gopherlabs
Types - slice, map, new, make, struct - Gopherlabs Types - slice, map, new, make, struct - Gopherlabs
Types - slice, map, new, make, struct - Gopherlabs sangam biradar
 
Andriy Shalaenko - GO security tips
Andriy Shalaenko - GO security tipsAndriy Shalaenko - GO security tips
Andriy Shalaenko - GO security tipsOWASP Kyiv
 

Similar to GNU Make, Autotools, CMake 簡介 (20)

CEDEC2014 Live Coding in C++
CEDEC2014 Live Coding in C++CEDEC2014 Live Coding in C++
CEDEC2014 Live Coding in C++
 
Coding with Vim
Coding with VimCoding with Vim
Coding with Vim
 
GDG DevFest Kyoto 2014 これからのGoの話をしよう
GDG DevFest Kyoto 2014 これからのGoの話をしようGDG DevFest Kyoto 2014 これからのGoの話をしよう
GDG DevFest Kyoto 2014 これからのGoの話をしよう
 
Introduction of unit test on android kernel
Introduction of unit test on android kernelIntroduction of unit test on android kernel
Introduction of unit test on android kernel
 
Compiler design notes phases of compiler
Compiler design notes phases of compilerCompiler design notes phases of compiler
Compiler design notes phases of compiler
 
Tomáš Čorej: Configuration management & CFEngine3
Tomáš Čorej: Configuration management & CFEngine3Tomáš Čorej: Configuration management & CFEngine3
Tomáš Čorej: Configuration management & CFEngine3
 
Kick my mouse away
Kick my mouse awayKick my mouse away
Kick my mouse away
 
Practical SystemTAP basics: Perl memory profiling
Practical SystemTAP basics: Perl memory profilingPractical SystemTAP basics: Perl memory profiling
Practical SystemTAP basics: Perl memory profiling
 
Unix shell talk - RIT SSE
Unix shell talk - RIT SSEUnix shell talk - RIT SSE
Unix shell talk - RIT SSE
 
Getting started with open mobile development on the Openmoko platform
Getting started with open mobile development on the Openmoko platformGetting started with open mobile development on the Openmoko platform
Getting started with open mobile development on the Openmoko platform
 
Basicsof c make and git for a hello qt application
Basicsof c make and git for a hello qt applicationBasicsof c make and git for a hello qt application
Basicsof c make and git for a hello qt application
 
Not Your Fathers C - C Application Development In 2016
Not Your Fathers C - C Application Development In 2016Not Your Fathers C - C Application Development In 2016
Not Your Fathers C - C Application Development In 2016
 
Trace kernel code tips
Trace kernel code tipsTrace kernel code tips
Trace kernel code tips
 
Autotools
AutotoolsAutotools
Autotools
 
Go. Why it goes
Go. Why it goesGo. Why it goes
Go. Why it goes
 
TinyMCE Editor - Rhythmyx: Powerful Website Management Platform
TinyMCE Editor - Rhythmyx: Powerful Website Management PlatformTinyMCE Editor - Rhythmyx: Powerful Website Management Platform
TinyMCE Editor - Rhythmyx: Powerful Website Management Platform
 
Unix is my IDE
Unix is my IDEUnix is my IDE
Unix is my IDE
 
WordPress Plugin Development 201
WordPress Plugin Development 201WordPress Plugin Development 201
WordPress Plugin Development 201
 
Types - slice, map, new, make, struct - Gopherlabs
Types - slice, map, new, make, struct - Gopherlabs Types - slice, map, new, make, struct - Gopherlabs
Types - slice, map, new, make, struct - Gopherlabs
 
Andriy Shalaenko - GO security tips
Andriy Shalaenko - GO security tipsAndriy Shalaenko - GO security tips
Andriy Shalaenko - GO security tips
 

More from Wen Liao

Hello world 的一生
Hello world 的一生Hello world 的一生
Hello world 的一生Wen Liao
 
Notes on oracle solaris 11.3 linkers and libraries guide chapter one
Notes on oracle solaris 11.3 linkers  and libraries guide  chapter oneNotes on oracle solaris 11.3 linkers  and libraries guide  chapter one
Notes on oracle solaris 11.3 linkers and libraries guide chapter oneWen Liao
 
開放街圖 自助旅行的好幫手
開放街圖   自助旅行的好幫手開放街圖   自助旅行的好幫手
開放街圖 自助旅行的好幫手Wen Liao
 
GNU AS簡介
GNU AS簡介GNU AS簡介
GNU AS簡介Wen Liao
 
UPnP 1.0 簡介
UPnP 1.0 簡介UPnP 1.0 簡介
UPnP 1.0 簡介Wen Liao
 
故事:自由軟體和 Richard Stallman
故事:自由軟體和 Richard Stallman故事:自由軟體和 Richard Stallman
故事:自由軟體和 Richard StallmanWen Liao
 
Hello world在那邊?背景說明
Hello world在那邊?背景說明Hello world在那邊?背景說明
Hello world在那邊?背景說明Wen Liao
 
A successful git branching model 導讀
A successful git branching model 導讀A successful git branching model 導讀
A successful git branching model 導讀Wen Liao
 
GNU ld的linker script簡介
GNU ld的linker script簡介GNU ld的linker script簡介
GNU ld的linker script簡介Wen Liao
 
Trace 程式碼之皮
Trace 程式碼之皮Trace 程式碼之皮
Trace 程式碼之皮Wen Liao
 
淺談Debian套件打包
淺談Debian套件打包淺談Debian套件打包
淺談Debian套件打包Wen Liao
 
A Brief Introduction to Regular Expression with Python 2.7.3 Standard Library
A Brief Introduction to Regular Expression with Python 2.7.3 Standard LibraryA Brief Introduction to Regular Expression with Python 2.7.3 Standard Library
A Brief Introduction to Regular Expression with Python 2.7.3 Standard LibraryWen Liao
 
GNU gettext簡介 - 以C語言為範例
GNU gettext簡介 - 以C語言為範例GNU gettext簡介 - 以C語言為範例
GNU gettext簡介 - 以C語言為範例Wen Liao
 
Guide to GStreamer Application Development Manual: CH1 to CH10
Guide to GStreamer Application Development Manual: CH1 to CH10Guide to GStreamer Application Development Manual: CH1 to CH10
Guide to GStreamer Application Development Manual: CH1 to CH10Wen Liao
 
Testing in python 2.7.3
Testing in python 2.7.3Testing in python 2.7.3
Testing in python 2.7.3Wen Liao
 
從組裝軟體中談談軟體發展管理
從組裝軟體中談談軟體發展管理從組裝軟體中談談軟體發展管理
從組裝軟體中談談軟體發展管理Wen Liao
 
軟體組裝心得分享
軟體組裝心得分享軟體組裝心得分享
軟體組裝心得分享Wen Liao
 
Introduce to Linux command line
Introduce to Linux command lineIntroduce to Linux command line
Introduce to Linux command lineWen Liao
 

More from Wen Liao (18)

Hello world 的一生
Hello world 的一生Hello world 的一生
Hello world 的一生
 
Notes on oracle solaris 11.3 linkers and libraries guide chapter one
Notes on oracle solaris 11.3 linkers  and libraries guide  chapter oneNotes on oracle solaris 11.3 linkers  and libraries guide  chapter one
Notes on oracle solaris 11.3 linkers and libraries guide chapter one
 
開放街圖 自助旅行的好幫手
開放街圖   自助旅行的好幫手開放街圖   自助旅行的好幫手
開放街圖 自助旅行的好幫手
 
GNU AS簡介
GNU AS簡介GNU AS簡介
GNU AS簡介
 
UPnP 1.0 簡介
UPnP 1.0 簡介UPnP 1.0 簡介
UPnP 1.0 簡介
 
故事:自由軟體和 Richard Stallman
故事:自由軟體和 Richard Stallman故事:自由軟體和 Richard Stallman
故事:自由軟體和 Richard Stallman
 
Hello world在那邊?背景說明
Hello world在那邊?背景說明Hello world在那邊?背景說明
Hello world在那邊?背景說明
 
A successful git branching model 導讀
A successful git branching model 導讀A successful git branching model 導讀
A successful git branching model 導讀
 
GNU ld的linker script簡介
GNU ld的linker script簡介GNU ld的linker script簡介
GNU ld的linker script簡介
 
Trace 程式碼之皮
Trace 程式碼之皮Trace 程式碼之皮
Trace 程式碼之皮
 
淺談Debian套件打包
淺談Debian套件打包淺談Debian套件打包
淺談Debian套件打包
 
A Brief Introduction to Regular Expression with Python 2.7.3 Standard Library
A Brief Introduction to Regular Expression with Python 2.7.3 Standard LibraryA Brief Introduction to Regular Expression with Python 2.7.3 Standard Library
A Brief Introduction to Regular Expression with Python 2.7.3 Standard Library
 
GNU gettext簡介 - 以C語言為範例
GNU gettext簡介 - 以C語言為範例GNU gettext簡介 - 以C語言為範例
GNU gettext簡介 - 以C語言為範例
 
Guide to GStreamer Application Development Manual: CH1 to CH10
Guide to GStreamer Application Development Manual: CH1 to CH10Guide to GStreamer Application Development Manual: CH1 to CH10
Guide to GStreamer Application Development Manual: CH1 to CH10
 
Testing in python 2.7.3
Testing in python 2.7.3Testing in python 2.7.3
Testing in python 2.7.3
 
從組裝軟體中談談軟體發展管理
從組裝軟體中談談軟體發展管理從組裝軟體中談談軟體發展管理
從組裝軟體中談談軟體發展管理
 
軟體組裝心得分享
軟體組裝心得分享軟體組裝心得分享
軟體組裝心得分享
 
Introduce to Linux command line
Introduce to Linux command lineIntroduce to Linux command line
Introduce to Linux command line
 

Recently uploaded

20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-pyJamie (Taka) Wang
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarPrecisely
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...Aggregage
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6DianaGray10
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1DianaGray10
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsSafe Software
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...DianaGray10
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemAsko Soukka
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfDaniel Santiago Silva Capera
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDELiveplex
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxGDSC PJATK
 

Recently uploaded (20)

20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-py
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity Webinar
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystem
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
 
20230104 - machine vision
20230104 - machine vision20230104 - machine vision
20230104 - machine vision
 
201610817 - edge part1
201610817 - edge part1201610817 - edge part1
201610817 - edge part1
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptx
 

GNU Make, Autotools, CMake 簡介