Ninja: ๋นŒ๋“œ๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ƒ์„ธํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•

์— ๋งŒ๋“  2015๋…„ 01์›” 16์ผ  ยท  10์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: ninja-build/ninja

์•ˆ๋…•ํ•˜์„ธ์š”,

CMake๋ฅผ ํ†ตํ•ด ๋‹Œ์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Unix Makefile ์ƒ์„ฑ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž์„ธํ•œ Makefile์ด ์ƒ์„ฑ๋˜๋Š” -DCMAKE_VERBOSE_MAKEFILE=ON ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Makefile ์ƒ์„ฑ๊ธฐ๋Š” VERBOSE=1 ๋ฅผ makefile์— ์ž‘์„ฑํ•˜์—ฌ ์ด๋ฅผ ์•„์นด์ด๋ธŒํ•ฉ๋‹ˆ๋‹ค. -v ๋ฅผ ํ†ตํ•ด ninja๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ninja ํŒŒ์ผ์— ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฐ์‚ฌ ํ•ด์š”,
๊ทธ๋ ˆ๊ณ ๋ฅด

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ์ด SET ๋ช…๋ น์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  Ninja๋ฅผ ์žฅํ™ฉํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON")

๋ชจ๋“  10 ๋Œ“๊ธ€

์•„๋‹ˆ์š”. -v ๋‹Œ์ž๋ฅผ ๋ถ€๋ฅด๋Š”๊ฒŒ ๋ฌด์Šจ ๋ฌธ์ œ์ธ๊ฐ€์š”?

๋‹Œ์ž๋งŒ์œผ๋กœ๋Š” ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  • ์šฐ์„ , cmake์˜ ๋‹Œ์ž ํŒŒ์ผ์šฉ ์ƒ์„ฑ๊ธฐ๊ฐ€ ์ด๋ฅผ ์ง€์›ํ•˜๋„๋ก ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (makefile ์ƒ์„ฑ๊ธฐ์˜ ๊ฒฝ์šฐ cmake๋Š” .SILENT ํŠน์ˆ˜ ๋Œ€์ƒ ๋Œ€์ƒ์„ ์–ต์ œํ•˜๋Š” makefile์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.)
    @gjasny๊ฐ€ ์ œ์•ˆํ•œ ๊ฒƒ์„ ์‹œ๋„ํ•˜๋ฉด
cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -G Ninja ../src/cmake4eclipse/testprojects/C-1src/src1
-- Configuring done
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:
  • Ninja๋Š” ํŠน์ˆ˜ ๋Œ€์ƒ .SILENT ๋ฐ ๋ณ€์ˆ˜ ํ™•์žฅ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‹Œ์ž๊ฐ€ ๋ณ€์ˆ˜๋ฅผ ํ™•์žฅํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ๋Š”์ง€ ์˜์‹ฌ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

CMake 3.3์—๋Š” ์ด์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/Kitware/CMake/commit/ce935ebe50926bde199d86fbde4a78974a4043f9

-DCMAKE_VERBOSE_MAKEFILE=ON ํ•˜๋ฉด cmake --build ๊ฐ€ -v ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋‹Œ์ž ํ˜ธ์ถœ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜๋„ Ninjafiles์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ˜„์žฌ๋Š” ํ˜„์ƒ ์œ ์ง€์— ๋”ฐ๋ผ ์‚ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@gjasny , ์ €๋Š” CMake 3.10์„ ์‚ฌ์šฉํ•˜๊ณ  CMakeLists.txt ์— ๋‹ค์Œ set(CMAKE_VERBOSE_MAKEFILE ON) ์„ค์ •ํ–ˆ์ง€๋งŒ Ninja์—์„œ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์–ป์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ์•„์ด๋””์–ด๋ผ๋„?

์บ์‹œ ๋ณ€์ˆ˜๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ CMake set ๋ช…๋ น์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ์ด SET ๋ช…๋ น์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  Ninja๋ฅผ ์žฅํ™ฉํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON")

๊ทธ๋ž˜๋„ Ninjafiles์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒŒ ์™œ ํ•„์š”ํ• ๊นŒ์š”?

์ด๊ฒƒ์ด ์—ฌ์ „ํžˆ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋ฉด ๋‹ค์‹œ ์—ฌ์‹ญ์‹œ์˜ค.

์ด ๋ฒ„๊ทธ์— ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด: set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON") ๋Š” Windows์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ƒ์‹:

CMakeLists.txt

cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
project(simplecmake CXX)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON")

add_library(simplecmake simple.cpp)

simple.cpp์˜ ๋‚ด์šฉ์€ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ cmake๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ์ž…๋‹ˆ๋‹ค.

<strong i="12">@echo</strong> off
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64
cd c:/Users/Administrator/ezyang/lab3
cd build
set CC=cl
set CXX=cl
cmake -GNinja ..
cmake --build .

-DCMAKE_VERBOSE_MAKEFILE=ON ๋ฅผ cmake ํ˜ธ์ถœ์— ์ „๋‹ฌํ•˜๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

cmake๊ฐ€ ์„ค์ •์„ ์‚ผํ‚ค๋„๋ก set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON" FORCE) ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์žฌ์ƒ์„ฑํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰