CMake๋ ๊ฐ๋จํ ์คํฌ๋ฆฝํ ์ธ์ด, ๋ชจ๋์ ํตํด ๊ธฐ๋ฅ์ ํ์ฅํ๋ ์๋จ, ์ต์ํ์ ์ข ์์ฑ(M4, Perl ๋๋ Python์ ๋ํ ๋ฐ์ธ๋ฉ ์์), ์บ์ฑ ์ง์, ๊ต์ฐจ ์ปดํ์ผ์ ์ํ ๋๊ตฌ ์กด์ฌ, ๋น๋ ์์ฑ ์ง์์ ์ ๊ณตํ๋ ๊ฒ์ผ๋ก ์ ๋ช ํฉ๋๋ค. ๊ด๋ฒ์ํ ๋น๋ ์์คํ ๋ฐ ์ปดํ์ผ๋ฌ์ฉ ํ์ผ, ํ ์คํธ ์คํฌ๋ฆฝํธ ์ ์ ๋ฐ ํจํค์ง ๋น๋๋ฅผ ์ํ ctest ๋ฐ cpack ์ ํธ๋ฆฌํฐ, ๋น๋ ๋งค๊ฐ๋ณ์๋ฅผ ๋ํํ์ผ๋ก ์ค์ ํ๊ธฐ ์ํ cmake-gui ์ ํธ๋ฆฌํฐ.
์ฃผ์
- Objective C(โOBJCโ) ๋ฐ Objective ์ธ์ด์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
C++("OBJCXX") - project() ๋ฐ ํ์ฑํ_์ธ์ด() ๋ช ๋ น์ ํตํด ํ์ฑํํ ์ ์์ผ๋ฉฐ, ๊ทธ ํ์๋ ".m" ".mm" ํ์ผ์ ์ฝ๋๊ฐ ๋ค์์ด ์๋ Objective C ๋ฐ Objective C++ ์ฝ๋๋ก ์ปดํ์ผ๋ฉ๋๋ค. ์ด์ ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก C++; - Solaris ํ๋ซํผ์ Clang ์ปดํ์ผ๋ฌ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ์๋ก์ด ๋ช
๋ น์ค ์ต์
์ด ์ถ๊ฐ๋์์ต๋๋ค: ๋ฐํ ์ฝ๋ 0๊ณผ 1์ ์ธ์ํ๋ "cmake -E true|false"; "cmake --trace-redirect=" ๋์ ์ถ์ ์ ๋ณด๋ฅผ ํ์ผ๋ก ๋ฆฌ๋๋ ์
ํฉ๋๋ค.
"ํ์ค ์ค๋ฅ"; "cmake --loglevel" ๋ช ๋ น์ ๋ค๋ฅธ ๋ช ๋ น์ ์ด๋ฆ๊ณผ ์ผ์นํ๋๋ก "--log-level"๋ก ์ด๋ฆ์ด ๋ณ๊ฒฝ๋์์ต๋๋ค. - ์ฌ์ ์ปดํ์ผ ์ค์ ์ฌ์ฉ๋ ํค๋ ํ์ผ ๋ชฉ๋ก์ ๋์ดํ๊ธฐ ์ํด "target_precompile_headers()" ๋ช ๋ น์ ์ถ๊ฐํ์ต๋๋ค(๋น๋ ์๊ฐ ๋จ์ถ).
- ๋น๋ ์๋๋ฅผ ๋์ด๊ธฐ ์ํด ์์ฑ๊ธฐ์์ ์์ค ํ์ผ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ฐฐ์น ๋ชจ๋๋ฅผ ํ์ฑํํ๋ "UNITY_BUILD" ์์ฑ์ ์ถ๊ฐํ์ต๋๋ค.
- "find_file()", "find_library()", "find_path()" ๋ช
๋ น์ด ์ถ๊ฐ๋์์ต๋๋ค.
"find_package()" ๋ฐ "find_program()"์ ๋ค์ํ ํ์ผ ๋ฒ์ฃผ์ ๋ํ ๊ฒ์ ๊ฒฝ๋ก๋ฅผ ์ ์ํ๋ ๋ณ์์ ๋ฐ๋ผ ํ์ผ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๊ฒฝ๋ก, ํจํค์ง ๋ฐ ์คํ ํ์ผ์ ๊ฒ์ํฉ๋๋ค.
The variables "CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH", "CMAKE_FIND_USE_CMAKE_PATH", "CMAKE_FIND_USE_CMAKE_SYSTEM_PATH", "CMAKE_FIND_USE_PACKAGE_ROOT_PATH", "CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH" and "CMAKE_FIND_USE_PACKAGE_REGIST" are used to control the base search paths RY"; - ์คํ ํ์ผ์ด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋์ ์ผ๋ก ๋งํฌํ ๋ ์ฌ์ฉ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชฉ๋ก์ ๋ฐ๋ณต์ ์ผ๋ก ๊ฒ์ํ ์ ์๋ "file()" ๋ช ๋ น์ "file(GET_RUNTIME_DEPENDENCIES)" ๋ชจ๋๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ์ด ๋ชจ๋๋ ํ์ฌ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ GetPrerequisites() ๋ช ๋ น์ ๋์ฒดํ์ต๋๋ค.
- "ctest(1)" ๋ช ๋ น์ ๊ฐ ํ ์คํธ์ ํ์ํ ๋ฆฌ์์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ์คํธ๋ฅผ ์ง๋ ฌํํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํฉ๋๋ค.
- "CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY" ๋ณ์๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ "CMAKE_FIND_USE_PACKAGE_REGISTRY"๋ก ๋์ฒด๋์ด์ผ ํฉ๋๋ค.
- AIX ํ๋ซํผ ์ง์์ด ํฅ์๋์์ต๋๋ค. "ENABLE_EXPORTS" ์์ฑ์ ์ฌ์ฉํ๋ฉด ์คํ ํ์ผ ์ธ์๋ ๋ง์ปค์ ๋ํ ๊ฐ์ ธ์ค๊ธฐ ํ์ผ์ด ์์ฑ๋์ด ".imp" ํ์ฅ์๋ก ์ ์ฅ๋ฉ๋๋ค. "MODULE" ์ต์ ๊ณผ ํจ๊ป "add_library()"๋ฅผ ํธ์ถํ์ฌ ์์ฑ๋ ํ๋ฌ๊ทธ์ธ์์๋ "target_link_libraries()" ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ๋งํฌํ ๋ ์ด ํ์ผ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด์ CMake๊ฐ ๋ก๋ ์ ์ฐ๊ฒฐ์ ํ์ํ ๋ชจ๋ ๊ธฐํธ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ฏ๋ก AIX์์์ ๋ฐํ์ ์ฐ๊ฒฐ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋ฉ๋๋ค. ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ๋ก๋ ๊ฐ๋ฅํ ๋ชจ๋์ ๋ฐํ์ ๋งํฌ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด "CMAKE_SHARED_LINKER_FLAGS" ๋ฐ "CMAKE_MODULE_LINKER_FLAGS" ๋ณ์๋ฅผ ํตํด ์ ์๋ ๋ง์ปค ์์ ํ๋๊ทธ ๋ชฉ๋ก์์ "-Wl, -G" ์ต์ ์ ๋ช ์์ ์ผ๋ก ์ง์ ํด์ผ ํฉ๋๋ค.
์ถ์ฒ : opennet.ru