νμ¬ compdb λꡬλ₯Ό μ¬μ©νλ €λ©΄ 쿼리νλ €λ κ·μΉμ μ νν μ΄λ¦μ μμμΌ ν©λλ€. μ΄ μ΄λ¦μ΄ μμΈ‘ κ°λ₯νλ€λ©΄ μ μμ μΌλ‘ μλνμ§λ§ μΌλΆ μμ±κΈ°μ κ²½μ° λ°λμ κ·Έλ μ§λ μμ΅λλ€.
νΉν λ²μ 3.2μμ CMakeμ λμ μμ±κΈ°κ° <lang>_COMPILER__<directory>
νμμ κ·μΉμ μμ±νκΈ° μμνμ΅λλ€. μ¦, μ»΄νμΌ λ°μ΄ν°λ² μ΄μ€λ₯Ό 쿼리νλ €λ©΄ λ¨Όμ νλ‘μ νΈ λλ ν 리 νΈλ¦¬λ₯Ό μ€μΊνκ±°λ λ€λ₯Έ ν΄νΉμ μμ‘΄ν΄μΌ ν©λλ€. 3.2 μ΄μ μ CMakeλ <lang>_COMPILER
νμμ κ·μΉμ μμ±νλ―λ‘ νλ‘μ νΈμ λν νΉμ μ§μ μμ΄ μΌλ° λꡬμμ 쿼리ν μ μμ΅λλ€.
λ°λΌμ μ΄ κΈ°λ₯ μμ²μ λͺ λ Ήμ€ μΈμμ λν΄ κ·μΉ μ΄λ¦μ λ³΄λ€ μ μ°νκ² μΌμΉμν€κΈ° μν κ²μ λλ€. μ΅μνμΌλ‘ μ μ©ν ꡬνμ μ λμ¬ μ μ© μΌμΉλ₯Ό νμ©ν©λλ€. λλ μ κ·μ μΌμΉλ μ μ©ν©λλ€.
κ³Όκ±°μλ λͺ¨λ κ·μΉ λͺ©λ‘μ μΈμν μ μλ "κ·μΉ" λꡬ(7b67e48a1479c6fc7326c55756088bd57d64fc82)κ° μμμ΅λλ€. κ·Έ λꡬλ₯Ό μ¬μ©νλ©΄ λ€μκ³Ό κ°μ μμ μ μνν μ μμ΅λλ€.
ninja -t compdb `ninja -t rules | grep 'CXX_COMPILER_'`
μ Έ μμ± μ€ν¬λ¦½νΈλ₯Ό μμ±νλ λ°λ λμμ΄ λ μ μμΌλ―λ‘ μ΄ λꡬλ₯Ό λΆνμν€λ κ²μ΄ μ’μ΅λλ€. λλ μμΌλ‘ λ©°μΉ μμ κ·Έλ κ² νλ €κ³ λ Έλ ₯ν κ²μ΄λ€.
κ·Έκ²λ μλν©λλ€. κ°μ¬ν©λλ€.
λλ compdb λꡬλ₯Ό μ¬μ©νκΈ°κ° κ½€ μ΄λ ΅λ€λ κ²μ μκ² λμμ΅λλ€. -- μ μκ²λ κ·μΉ λͺ©λ‘μ΄ νμνλ€λ κ²μ΄ λλμ΅λλ€. λͺ μμ μΈ κ·μΉμ΄ λͺ μμ μΌλ‘ μ λ¬λμ§ μμΌλ©΄ "λͺ¨λ κ·μΉ"μ μλ―Έν μ μμ΅λκΉ? cmake κΈ°λ° λΉλμ μΆ©λΆν κΉμ?
(κ΄λ ¨ μμ: μ»΄νμΌ λ°μ΄ν°λ² μ΄μ€λ₯Ό μ§μ μμ±νλλ‘ cmakeμ CMAKE_EXPORT_COMPILE_COMMANDS
λ₯Ό μ λ¬ν μ μλ€κ³ μκ°ν©λλ€.)
μ¬κΈ°μ μ¬λμ΄ μμ΅λκΉ? π
κ·μΉ λκ΅¬κ° λΉλμμ μ κ±°λ κ² κ°μ΅λκΉ?
μ΄κ²μ μ λ§ λμμ΄ λ κ²μ λλ€.
κΈ°λ³Έμ μΌλ‘ λͺ¨λ κ·μΉμ μΈμ νλΌλ @nico μ μ μμ΄ λ§μμ
μ¬κΈ°μ @sarcasmμ΄ μ μν ν΄κ²° λ°©λ²μ λ€μ μΆμ νμ¬ λμ μ체μμ λ μλ¦λ€μ΄ μ루μ μ λκΈ°λ₯Ό λΆμ¬ν©λλ€. :)
μ΄μ κΈ°λ³Έμ μΌλ‘ λͺ¨λ κ·μΉμ λ€ννλ #1377μ΄ μμ΅λλ€.
μ¬κΈ°μ μμ λ©λͺ¨λ₯Ό μΆκ°νκ³ μΆμμ§λ§ μΌλΆ CMake νλ‘μ νΈ[0]μ κ²½μ° ninja -t compdb
(μΈμ μμ)λ μ무 κ²λ λ€ννμ§ μλ κ² κ°μ΅λλ€(μΆλ ₯μ λΉ λͺ©λ‘ []
).
cmake -G Ninja .
ninja -t compdb
[
]
κ·Έλ¬λ nicoκ° μ μν λλ‘ CMAKE_EXPORT_COMPILE_COMMANDS
λ₯Ό μ¬μ©νλ©΄ λ€μμ μνν μ μμ΅λλ€.
cmake -G Ninja . -DCMAKE_EXPORT_COMPILE_COMMANDS=1
ninja -t compdb
[
]
ninja -t compdb
μ¬μ ν λΉμ΄ μμ§λ§ compile_commands.jsonμ΄ μ΄λ―Έ μμ±λμμ΅λλ€.
κ³ λ§μ λμ½!
[0] μ μ΄λ Binaryen μ κ²½μ°
ninja --version
μ(λ) λ¬΄μ¨ λ»μΈκ°μ?
1.8.2, btw μ΄ λμλ depot_tools μμ
ν΄λΉ λ²μ μλ #1377μ΄ μμ΅λλ€.
κ°μ₯ μ μ©ν λκΈ
λλ compdb λꡬλ₯Ό μ¬μ©νκΈ°κ° κ½€ μ΄λ ΅λ€λ κ²μ μκ² λμμ΅λλ€. -- μ μκ²λ κ·μΉ λͺ©λ‘μ΄ νμνλ€λ κ²μ΄ λλμ΅λλ€. λͺ μμ μΈ κ·μΉμ΄ λͺ μμ μΌλ‘ μ λ¬λμ§ μμΌλ©΄ "λͺ¨λ κ·μΉ"μ μλ―Έν μ μμ΅λκΉ? cmake κΈ°λ° λΉλμ μΆ©λΆν κΉμ?
(κ΄λ ¨ μμ: μ»΄νμΌ λ°μ΄ν°λ² μ΄μ€λ₯Ό μ§μ μμ±νλλ‘ cmakeμ
CMAKE_EXPORT_COMPILE_COMMANDS
λ₯Ό μ λ¬ν μ μλ€κ³ μκ°ν©λλ€.)