CMake 3.17.0 ๋นŒ๋“œ ์‹œ์Šคํ…œ ์ถœ์‹œ

๋„์ž… ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๊ฐœ๋ฐฉํ˜• ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ ์ƒ์„ฑ๊ธฐ ์ถœ์‹œ ์”จ๋ฉ”์ดํฌ 3.17, Autotools์˜ ๋Œ€์•ˆ์œผ๋กœ ์ž‘๋™ํ•˜๋ฉฐ KDE, LLVM/Clang, MySQL, MariaDB, ReactOS ๋ฐ Blender์™€ ๊ฐ™์€ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. CMake ์ฝ”๋“œ๋Š” C++๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ BSD ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

CMake๋Š” ๊ฐ„๋‹จํ•œ ์Šคํฌ๋ฆฝํŒ… ์–ธ์–ด, ๋ชจ๋“ˆ์„ ํ†ตํ•ด ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•˜๋Š” ์ˆ˜๋‹จ, ์ตœ์†Œํ•œ์˜ ์ข…์†์„ฑ(M4, Perl ๋˜๋Š” Python์— ๋Œ€ํ•œ ๋ฐ”์ธ๋”ฉ ์—†์Œ), ์บ์‹ฑ ์ง€์›, ๊ต์ฐจ ์ปดํŒŒ์ผ์„ ์œ„ํ•œ ๋„๊ตฌ ์กด์žฌ, ๋นŒ๋“œ ์ƒ์„ฑ ์ง€์›์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์œ ๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๊ด‘๋ฒ”์œ„ํ•œ ๋นŒ๋“œ ์‹œ์Šคํ…œ ๋ฐ ์ปดํŒŒ์ผ๋Ÿฌ์šฉ ํŒŒ์ผ, ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ ์ •์˜ ๋ฐ ํŒจํ‚ค์ง€ ๋นŒ๋“œ๋ฅผ ์œ„ํ•œ ctest ๋ฐ cpack ์œ ํ‹ธ๋ฆฌํ‹ฐ, ๋นŒ๋“œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋Œ€ํ™”ํ˜•์œผ๋กœ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ cmake-gui ์œ ํ‹ธ๋ฆฌํ‹ฐ.

์ฃผ์š” ๊ฐœ๋Ÿ‰:

  • Ninja ํˆดํ‚ท์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์ƒˆ๋กœ์šด ์–ด์…ˆ๋ธ”๋ฆฌ ์Šคํฌ๋ฆฝํŠธ ์ƒ์„ฑ๊ธฐ์ธ "Ninja Multi-Config"๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์—ฌ๋Ÿฌ ์–ด์…ˆ๋ธ”๋ฆฌ ๊ตฌ์„ฑ์„ ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ ์ด์ „ ์ƒ์„ฑ๊ธฐ์™€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
  • Visual Studio์šฉ ์–ด์…ˆ๋ธ”๋ฆฌ ์Šคํฌ๋ฆฝํŠธ ์ƒ์„ฑ๊ธฐ ์ถœ์—ฐ ํ•œ ๊ฐ ๊ตฌ์„ฑ๊ณผ ๊ด€๋ จ๋œ ์†Œ์Šค ํŒŒ์ผ์„ ์ •์˜ํ•˜๋Š” ๊ธฐ๋Šฅ(๊ตฌ์„ฑ๋ณ„ ์†Œ์Šค)
  • CUDA์— ๋Œ€ํ•œ ๋ฉ”ํƒ€ ๋งค๊ฐœ๋ณ€์ˆ˜("cuda_std_03", "cuda_std_14" ๋“ฑ)๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ปดํŒŒ์ผ๋Ÿฌ ๋งค๊ฐœ๋ณ€์ˆ˜ ์„ค์ • ๋„๊ตฌ(์ปดํŒŒ์ผ ๊ธฐ๋Šฅ)์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • CUDA๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋Ÿฐํƒ€์ž„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์œ ํ˜•์„ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€์ˆ˜ "CMAKE_CUDA_RUNTIME_LIBRARY" ๋ฐ "CUDA_RUNTIME_LIBRARY"๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • CUDA ์–ธ์–ด๋ฅผ ํ™œ์„ฑํ™”ํ•˜์ง€ ์•Š๊ณ  ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ CUDA ํˆดํ‚ท์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด "FindCUDAToolkit" ๋ชจ๋“ˆ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฒ€์ƒ‰ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์ถ”๊ฐ€ ์ง„๋‹จ์„ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด cmake์— "--debug-find" ๋ช…๋ น์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋น„์Šทํ•œ ๋ชฉ์ ์œผ๋กœ CMAKE_FIND_DEBUG_MODE ๋ณ€์ˆ˜๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • cmake์—์„œ ์ƒ์„ฑ๋œ ๊ตฌ์„ฑ ํŒŒ์ผ "CURLConfig.cmake"๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ CURL ๋„๊ตฌ ๊ฒ€์ƒ‰์— ๋Œ€ํ•œ ์ง€์›์„ "FindCURL" ๋ชจ๋“ˆ์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋™์ž‘์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด CURL_NO_CURL_CMAKE ๋ณ€์ˆ˜๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
  • FindPython ๋ชจ๋“ˆ์—๋Š” "conda"๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ด€๋ฆฌ๋˜๋Š” ๊ฐ€์ƒ ํ™˜๊ฒฝ์—์„œ Python ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ctest ์œ ํ‹ธ๋ฆฌํ‹ฐ์—๋Š” ํ…Œ์ŠคํŠธ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๋™์ž‘์„ ์ •์˜ํ•˜๋Š” "--no-tests=[error|ignore]" ์˜ต์…˜๊ณผ ํ…Œ์ŠคํŠธ ์žฌ์‹คํ–‰ ์กฐ๊ฑด์„ ์„ค์ •ํ•˜๋Š” "--repeat" ์˜ต์…˜์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค(ํ†ต๊ณผ, ์‹œ๊ฐ„ ์ดˆ๊ณผ ํ›„).
  • ์–ด์…ˆ๋ธ”๋ฆฌ ๋Œ€์ƒ ์†์„ฑ INTERFACE_LINK_OPTIONS, INTERFACE_LINK_DIRECTORIES ๋ฐ INTERFACE_LINK_DEPENDS๋Š” ์ด์ œ ์ •์ ์œผ๋กœ ์–ด์…ˆ๋ธ”๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋‚ด๋ถ€ ์ข…์†์„ฑ ๊ฐ„์— ์ „์†ก๋ฉ๋‹ˆ๋‹ค.
  • MinGW ํˆดํ‚ท์„ ์‚ฌ์šฉํ•  ๋•Œ find_library ๋ช…๋ น์„ ์‚ฌ์šฉํ•œ DLL ํŒŒ์ผ ๊ฒ€์ƒ‰์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค(๋Œ€์‹  ๊ธฐ๋ณธ ์‹œ๋„๋Š” ".dll.a" ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค).
  • ์ด์ œ Ninja ์ƒ์„ฑ๊ธฐ์—์„œ ninja ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์„ ํƒํ•˜๋Š” ๋…ผ๋ฆฌ๋Š” ์‹คํ–‰ ํŒŒ์ผ ์ด๋ฆ„์— ์˜์กดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. PATH ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ์ •์˜๋œ ๊ฒฝ๋กœ์— ์žˆ๋Š” ์ฒซ ๋ฒˆ์งธ ninja-build, ninja ๋˜๋Š” samu ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ๋ณ„๋„์˜ "-E ์ œ๊ฑฐ" ๋ฐ "-E ์ œ๊ฑฐ_๋””๋ ‰ํ„ฐ๋ฆฌ" ๋ช…๋ น ๋Œ€์‹  ํŒŒ์ผ ๋ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” "-E rm" ๋ช…๋ น์„ cmake์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€