cmakeãå¿
èŠãªçç±ã詳现ã«èª¬æããŠãããããå°å
¥éšã¯çŽ æŽãããã§ãã æ¢ã«ç¥ã£ãŠããã°ãããã«ã«ããã§ããŸãã
ãšã³ããªãŒ
æã§ãããžã§ã¯ããã³ã³ãã€ã«ããã®ã¯æéã®ç¡é§ã§ãã ããã¯å®éã«ã¯å
¬çã§ãããããã°ã©ã ãäœæãã人ã¯ããã«ã€ããŠç¥ã£ãŠããŸãã ãããããã¹ãŠãèªåçã«ã³ã³ãã€ã«ããã«ã¯ãã«ãŒã«ãèšå®ããå¿
èŠããããŸããïŒ å€ãã®å Žåãå€ãæ¹æ³ã§ã¯ãnixã«ã¯
makefileã䜿çšããwindowsã«ã¯nmakeã䜿çšããŸãã
ç§ã¯æ°å¹Žéããã°ã©ãã³ã°ãè¡ã£ãŠããŸããããã¡ã€ã¯ãã¡ã€ã«ã«åºã¥ããŠãããžã§ã¯ãã®ç°¡åãªèªåã¢ã»ã³ãã©ãŒãæäœæ¥ã§äœæããŸããããå°ãå¿ãã䟡å€ãããããã®å·§åŠãªã¹ããŒã ã®äœææ¹æ³ãååŠç¿ããå¿
èŠããããŸãã åºæ¬çã«ãLinuxãŸãã¯Windowsã®ããããã®ã·ã¹ãã çšã«èšèšããããããžã§ã¯ããå®è¡ããå¿
èŠããããå€ãã®å Žåãçžäºã«ã¯ãã¹ã³ã³ãã€ã«ãããŸããã ã¡ã€ã¯ãã¡ã€ã«ã®ç§»æ€æ§ã®ããã«ã
automakeãš
autogenã䜿çšãããŸããããããã®æ§æã¯ããã«
è€éã§ãã éžæè¢ãçæ³çã ãšã¯èšããŸããããç§ã¯cmakeã«åãæ¿ããããšã«ããŸãããããã¯å©çšå¯èœãªãã¹ãŠã«ç§»æ€ãããŠããããã§ãã ç§ã«ã¯ãã£ãšäººéãèªããããã«æããŸããã åºæ¬ã説æããããšæããŸãã ã«ãŒã«ãåèªã§èšè¿°ããããããã¡ã€ã¯ãã¡ã€ã«ãçæãããŸããããã¯ãã§ã«æšæºçãªæ¹æ³ã§å®è¡ãããŠããŸãã
æè²ããã°ã©ã
ãªãå¿
èŠãªã®ã§ããïŒ ãã®ãããç°ãªããã¹ã䜿çšããŠå¥ã®ãã·ã³ã«è»¢éããå Žåãmakefileã§äœãä¿®æ£ããã«2ã€ã®ã³ãã³ãã䜿çšããŠãããžã§ã¯ãããŸãšããŸãã
ããããæ§æã¯ãããŸããïŒ ããã¯ä»£æ¿ã§ãã ãŸããconfigureã¯ã¯ãã¹ãã©ãããã©ãŒã ã§ã¯ãããŸããããã®çæã«ã¯autoconf / autogenãå¿
èŠã§ãããã®ããã«ã¯ãŸã ã«ãŒã«ã®ã»ããããããŸãã
ã¡ãªããã®ã¿ïŒ èªåçæãããã¡ã€ã¯ãã¡ã€ã«ã䜿çšããã³ã³ãã€ã«ã¯ãå€ãæ¹æ³ãããå°ãé
ããªããŸãã ããšãã°ãKDE-4ã¯å
¬åŒã®
ãªãªãŒã¹ããŒã«ã§ã ã
ã¯ããã«
çŸåšã®ãã¥ãŒããªã¢ã«ã§ã¯ãLinuxã§ã³ã³ãã€ã«ããå¿
èŠãããæãåçŽãªC ++ãããžã§ã¯ããã³ãã¬ãŒãã«ã€ããŠèª¬æããŸãã ç§»æ€æ§ã«ã€ããŠã¯è°è«ããããç°ãªãã³ã³ãã€ã©ã¯å²ãåœãŠãããŸããã 1ã€ã®èšäºã«ã¯åãŸããŸããããå€ãã®æ
£ç¿ãåå¿è
ãããŸãã«ãæ··ä¹±ãããŸãã
ãŸããcmakeã®ãããžã§ã¯ãã®ç§å¯ã«åãå
¥ããããæ§é ã«ã€ããŠã éåžžããããžã§ã¯ãã«ãŒãã«ã¯ã
srcãã©ã«ããŒïŒã¯ããŒãºããœãŒã¹çšïŒã
include ïŒãããªãã¯ããããŒçšïŒã
lib ïŒãã©ã°ã€ã³ã©ã€ãã©ãªçšãã·ã¹ãã ã©ã€ãã©ãªã§ãªãå ŽåïŒã空ã®
ãã«ããã©ã«ããŒïŒ
ãã«ããããŠããªãå Žåã¯äœæããŸãïŒãäœæããŸã
binã远å ããŸãïŒçµæã®ãã€ããªã®å Žåã¯outïŒã ãŸãã
ã«ãŒãã«AUTHOTSãCOPYINGãINSTALLãNEWSãREADMEãChangeLo gãã¡ã€ã«ãååšããå¿
èŠããããŸãã 空ã®å ŽåããããŸãããå¯çšæ§ãå¿
èŠã§ãã ãªãã·ã§ã³ã¯
config.h.inãã¡ã€ã«ãããããŸããïŒããã«ã€ããŠã¯åŸã»ã©èª¬æããŸãïŒã cmakeæ§æãã¡ã€ã«ã¯ã
CMakeLists.txtãšããåã€ã³ã¯ã«ãŒããã©ã«ããŒã«ãããŸãã ãã®ååã¯cmakeã«ãã£ãŠäœããããã®ã§ã倿ŽãããŸããã
ããã¥ã¡ã³ãã¯æåã¯çè§£ããã®ãå°é£
ã§ãã ãå®å
šã§ã¯ãããŸãã ããã¯ãã1ã€ã®ãã€ãã¹ã§ãã ããããautotoolsãšæ¯èŒããŠ...
cmakeãçæã§ãããããžã§ã¯ããã¡ã€ã«ã¿ã€ãã®ãªã¹ãïŒ
é衚瀺ã®ããã¹ãããŒã©ã³ãã®ã¡ã€ã¯ãã¡ã€ã«
Msysã¡ã€ã¯ãã¡ã€ã«
MinGW Makefile
NMake Makefile
NMake Makefiles JOM
å¿è
Unixã¡ã€ã¯ãã¡ã€ã«
Visual Studio 10
Visual Studio 10 IA64
Visual Studio 10 Win64
Visual Studio 11
Visual Studio 11 ARM
Visual Studio 11 Win64
Visual Studio 6
Visual Studio 7
Visual Studio 7 .NET 2003
Visual Studio 8 2005
Visual Studio 8 2005 Win64
Visual Studio 9 2008
Visual Studio 9 2008 IA64
Visual Studio 9 2008 Win64
Watcom WMake
Xcode
CodeBlocks-MinGW Makefile
CodeBlocks-NMake Makefile
CodeBlocks-å¿è
CodeBlocks-Unix Makefile
Eclipse CDT4-MinGWã¡ã€ã¯ãã¡ã€ã«
Eclipse CDT4-NMake Makefile
Eclipse CDT4-å¿è
Eclipse CDT4-Unixã¡ã€ã¯ãã¡ã€ã«
ãœãããŠã§ã¢ãå
¥æãã
source.cppããããšããŸã
-srcãã©ã«ããŒã«å
¥ããŸãã ãã ããåããããžã§ã¯ãããããã
ãcore.cppãcore.hppãcommon.hpp ã
types.hppã®ãã¡ã€ã«ãããã«ããã€ããããŸãã
ãããã®ãã¡ã€ã«ã¯srcã«å
¥ããŠãããšãã°
pthreadãªã©ã®ã©ã€ãã©ãªãå¿
èŠã§ãã ãœãŒã¹ãææ¡ãããããžã§ã¯ãã®èª¬æã«é²ã¿ãèªåã³ã³ãã€ã«ã®æºåãããŸãã
ãã¹ãŠã¯ããããžã§ã¯ãã«ãŒãã«CMakeLists.txtãã¡ã€ã«ãäœæããããšããå§ãŸããŸãã Cmakeã«ãŒã«ã¯ã¹ã¯ãªããèšèªã«äŒŒãŠãããjavascriptãšphpã®ã¯ãã¹ã§ãã ã¯ããã«ç°¡åã§ãã æ¡ä»¶ã颿°ã倿°ã宿°ããã©ã°ã€ã³ããããŸãã
CMakeLists.txtãã¡ã€ã«ãããã€ãã®éšåã«åããŠèª¬æããŸãã ããŒã1ïŒ
# cmake_minimum_required (VERSION 2.6) cmake_policy(SET CMP0011 NEW) cmake_policy(SET CMP0003 OLD) OPTION(WITH_DEBUG_MODE "Build with debug mode" ON) if ( NOT UNIX ) message (FATAL_ERROR "Not Unix!") endif ()
cmake_minimum_requiredããŒãžã§ã³ãã§ãã¯é¢æ°ã¯æ¬¡ã®ãšããã§ãã
æŒç®åã¯ã
ããããïŒïŒ open and endifïŒïŒéãã
ããã«æžãããŠããŸãã
foreachïŒïŒããã³endforeachïŒïŒãšåæ§ã§ãã
ã¡ãã»ãŒãžé¢æ°ã¯
ã¡ãã»ãŒãžã衚瀺ããŸãã ã¡ãã»ãŒãžã®ã¿ã€ãã瀺ãããã«FATAL_ERRORãã©ã°ã䜿çšããŸããã
ãŸããã³ãã³ãã®æåŸã«ã»ãã³ãã³ïŒ;ïŒã¯é
眮ãããªãããšã«æ³šæããŠãã ããã 1è¡-1ã€ã®ã³ãã³ãããããŸãã èªã¿ãããããããã«ããã©ã±ããã¯æŒç®åããé ãããããŠããŸãã
åããŒã ã«ã¯éåžžããã©ã¡ãŒã¿ãèšå®ããããã®ããã€ãã®ãªãã·ã§ã³ãããããã
ããã¥ã¢ã«ãèŠãªããŠãã§ããŸããã
ç°¡åãª
玹ä»ãšç°¡åãª
äŸã¯ããã¥ã¡ã³ãã«ãããŸãããç§ã®æèŠã§ã¯åçŽãããŸãã
ããŒã2ïŒ
message ("Starting cmake") # , , include (myproj.cmake) # set (PROJECT myproj) # set (LIBRARIES) # foreach (LIBRARY ${LIBRARIES}) find_library("${LIBRARY}_FOUND" ${LIBRARY}) message(STATUS "Check the ${LIBRARY} is installed: " ${${LIBRARY}_FOUND}) if ( "${${LIBRARY}_FOUND}" STREQUAL "${LIBRARY}_FOUND-NOTFOUND" ) message(STATUS "Adding library sources") add_subdirectory (../${LIBRARY} lib/${LIBRARY}) endif () endforeach () # set (TARGETS "") set (HEADERS "") message ( STATUS "SOURCES: ${SOURCES}") add_subdirectory (src)
setïŒïŒé¢æ°ã¯ã倿°ãäœæãŸãã¯äžæžãããŸãã å€ããªãå Žåã倿°ã¯ç©ºã«ãªããŸãã ããã§èšå®ããã倿°ã¯ãçæã§äŒéãããæå³ã«åŸã£ãŠååãä»ããããŸãã
includeïŒïŒã¯ãçŸåšã®å Žæã«èšå®ãã¡ã€ã«ãå«ãå€éšãã¡ã€ã«ãå«ããŸãã 説æã¯ãããŸããã
ãŸããadd_subdirectoryïŒsrcïŒã¯ããããžã§ã¯ãã®ã¡ã€ã¯ãã¡ã€ã«ã®ãã«ããç¶ç¶ããå Žæã瀺ããŸãã
ããã§äžè¬çãªã«ãŒã«ã®ã¿ãèšå®ãããŠããå ŽåãCMakeLists.txtã®srcãã£ã¬ã¯ããªå
ã«ãç¹å®ã®ãœãŒã¹ãã¡ã€ã«ãçµåããããã®ãªãã·ã§ã³ãèšå®ãããŸãã
ãŸã èšåãããŠããŸããcmake_policyïŒïŒã ç§ã¯ãããçè§£ããŠä»å°æããªãããšã«æ±ºããŸããã ããã«åãããŸã©çµã¿ç«ãŠãç°¡åã«ããŸãã
foreachïŒïŒã«ãŒããšã©ã€ãã©ãªã«ã€ããŠã¯åŸã§èª¬æããŸãã ä»ã®ãšããã¹ãããããŸãã
ã§ã¯ãå¥ã®cmakeãã¡ã€ã«ã§äœãåãåºãããŸãããïŒ èŠãŠã¿ãŸãããïŒ
set ("${PROJECT}_BINARY_DIR" bin) set ("${PROJECT}_SOURCE_DIR" src:include) set ("${PROJECT}_LIB_DIR" lib) set (CMAKE_INCLUDE_PATH ${${PROJECT}_SOURCE_DIR}) set (CMAKE_LIBRARY_PATH ${${PROJECT}_LIB_DIR}) set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/${${PROJECT}_BINARY_DIR}) set (CMAKE_VERBOSE_MAKEFILE ON) set (CMAKE_BUILD_TYPE Debug) set (ERR_NO_UNIX "Cannot build on non Unix systems") if ( WITH_DEBUG_MODE ) ADD_DEFINITIONS( -DMY_DEBUG_MODE=1) endif() if ( CMAKE_COMPILER_IS_GNUCXX ) set(MY_CXX_FLAGS "-Wall -std=c++0x -fmessage-length=0 -v -L/usr/local/lib -L/usr/lib") set(CMAKE_CXX_FLAGS "-O0 ${MY_CXX_FLAGS}") # . . #set(CMAKE_CXX_FLAGS_DEBUG "-g -O0 -fno-reorder-blocks -fno-schedule-insns -fno-inline") #set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG") else () message (FATAL_ERROR ${ERR_NO_UNIX}) endif ()
setïŒïŒã¯ã$ {name}ã®åœ¢åŒã®å¥åŠãªïŒãŸãã¯æ¢ã«éŠŽæã¿ã®ããïŒæ§é ã䜿çšããŠããããšãããããŸã-åãsetïŒïŒãŸãã¯cmakeèªäœã䜿çšããŠä»¥åã«å®çŸ©ããã倿°ã眮ãæããŸãïŒãã¹ãŠã®cmakeå®çŸ©å€æ°ã¯ããã¥ã¡ã³ãã«ãããŸãïŒã ããšãã°ã$ {PROJECT}ã¯ã以åã«å®çŸ©ãããPROJECT倿°ããå€myprojãæ¿å
¥ããŸãã
srcïŒincludeãšã³ããªã¯åãªãæååã§ããLinuxã§ã¯ããã¹ã®åæãæå³ããŸãïŒã»ãã³ãã³ã§ã¯ãªãã³ãã³ã§åºåãããŸãïŒã
æåã®3è¡ã¯ãèšå®ãã倿°ã§ãã ãããŠããããcmakeã«å¿
èŠãªå€æ°ã§ãã ãããã¯æç€ºçã«çç¥ããããšãã§ããèµ·åæã«ãã§ã«å®çŸ©ãããŠããŸããããã®ãã©ã«ããŒæ§é ã§å¿
èŠãªå ŽæãæããŠããŸããã
ä»ã®å€æ°ã«åºã¥ããŠå€æ°åãäœæããå¿
èŠãããå ŽåããããŸãããããã¯å¯èœã§ãïŒ$ {$ {PROJECT} _SOURCE_DIR}ã æåã«ãPROJECTãéåç
§ãããŠã$ {myproj_SOURCE_DIR}ãååŸããŸããããã¯æåã«ãã§ã«å®çŸ©ãããŠããŸãã ãã®çµæããã®å€ã¯æ¬¡ã®ããã«ãªããŸãã ãããã¯ãã¹ãŠå¿
èŠãªé£ããã§ããããããããžã§ã¯ãåãmyprojããsuperpuperã«å€æŽãããå Žåã倿°åãªã©ã倿ŽããŠã³ãŒãå
šäœã調ã¹ãå¿
èŠã¯ãããŸããã
ifãããã¯ïŒCMAKE_COMPILER_IS_GNUCXXïŒã¯ãã³ã³ãã€ã«ã«äœ¿çšãããã©ã°ã決å®ããŸããã ãŸã ã¯ãã¹ãã©ãããã©ãŒã ã§ã¯ãããŸããããèµ·åæã«äœæããããã©ã³ããšããŸããŸãªå€æ°ãã©ã°ã䜿çšããŠãããŸããŸãªãã©ãããã©ãŒã ãšã³ã³ãã€ã©ã«ããŸããŸãªäŸåãã«ããå²ãåœãŠãããšãã§ããŸãã 倿°ã®ãªã¹ãå
šäœã¯ã
倿°ãã»ã¯ã·ã§ã³ã«ããããã®ã»ã¯ã·ã§ã³ã¯éåžžã«å€§ãããªã£ãŠããŸãã ããã«ããã®ãããã¯ã¯æ§æããå®å
šã«åé€ããããåºç¯ãªcmakeæ©èœã䜿çšããŠæºåã§ããŸãã ãã ããã¹ããŒã¹ãåããããŸãã
ifïŒWITH_DEBUG_MODEïŒ-WITH_ã§å§ãŸãç¹å¥ãªçš®é¡ã®å€æ°ããããŸãã ãããã¯ããŠãŒã¶ãŒãªãã·ã§ã³ãå®çŸ©ãã颿°ã§ããoptionïŒïŒé¢æ°ã䜿çšããŠäœæãããŸãïŒæåã®ã³ãŒãã«ãããŸããïŒã ãããã®å€æ°ã¯2ã€ã®ONå€ãŸãã¯OFFå€ã®ã¿ãåãå
¥ããããšãã°ããŒã«å€ãšããŠäœ¿çšã§ããŸãã ADD_DEFINITIONïŒ-DMY_DEBUG_MODE = 1ïŒã¯ããããã°ã¢ãŒããæå¹ãªå Žåãã³ã³ãã€ã©ã«-DMY_DEBUG_MODEãªãã·ã§ã³ã远å ããŸãã C ++ã³ã³ãã€ã©ïŒãã®å ŽåïŒã®å Žåãããã¯å®çŸ©ã远å ããããšãæå³ããŸãã
ãœãŒã¹ã³ãŒãã§ã®äœæ¥
srcãã©ã«ããŒã«ç§»åããŸããã ãã®äžã«CMakeLists.txtãå¿
èŠã§ããè©³çŽ°ãæ€èšããŸãã
set ("${PROJECT}_VERSION_MAJ" 0) set ("${PROJECT}_VERSION_MIN" 1) set ("${PROJECT}_VERSION_A" 1) set ("${PROJECT}_VERSION_B" 1) set ("${PROJECT}_VERSION" ${${PROJECT}_VERSION_MAJ}0${${PROJECT}_VERSION_MIN}0${${PROJECT}_VERSION_A}0${${PROJECT}_VERSION_B}) message(STATUS ${${PROJECT}_VERSION}) # set (MAIN_SOURCES source.cpp ) # set (PRIVATE_CLASSES core ) # , - SET (HEADERS_ONLY types common ) # set (PUBLIC_CLASSES) # set (ADDITIONAL_LIBRARIES stdc++ pthread ) set (PUBLIC_HEADERS) set (SOURCES) foreach (class ${PRIVATE_CLASSES}) LIST (APPEND SOURCES ${class}.cpp) LIST (APPEND HEADERS ${class}.hpp) endforeach () foreach (class ${HEADERS_ONLY}) LIST (APPEND HEADERS ${class}.hpp) endforeach () foreach (class ${PUBLIC_CLASSES}) LIST (APPEND SOURCES ${class}.cpp) LIST (APPEND HEADERS ../include/${PROJECT}/${class}.hpp) LIST (APPEND PUBLIC_HEADERS ../include/${PROJECT}/${class}.hpp) endforeach () add_executable (${PROJECT} ${MAIN_SOURCES} ${SOURCES}) target_link_libraries (${PROJECT} ${ADDITIONAL_LIBRARIES}) set_target_properties(${PROJECT} PROPERTIES VERSION "${${PROJECT}_VERSION}" SOVERSION "0") INSTALL ( TARGETS ${PROJECT} DESTINATION lib${LIB_SUFFIX} ) INSTALL ( FILES ${PUBLIC_HEADERS} DESTINATION include/${PROJECT} )
ç¹å®ã®ãã¡ã€ã«ãšãã®ã¢ââã»ã³ããªã¯ããã«èšé²ãããŸãã ãŸããããã°ã©ã ã®ããŒãžã§ã³ã決å®ããŸããã æ¬¡ã«ããœãŒã¹ã³ãŒãã®ã°ã«ãŒãïŒãŸãã¯ããã§ãªã¹ããšåŒã°ããïŒãå®çŸ©ããŸãããã¹ãŠã®ååã¯ã¹ããŒã¹ã§èšè¿°ãããŸãã MAIN_SOURCES-1ã€ã®ã¡ã€ã³ãœãŒã¹ãPRIVATE_CLASSES-ãœãŒã¹ãã¢ã®ãªã¹ãïŒå
±éåã®source.cpp-header.hppïŒãPUBLIC_CLASSES-ãã®ãããžã§ã¯ãã§ã¯ç©ºãHEADERS_ONLY-ããããŒãã¡ã€ã«ã®ã¿ã®ãªã¹ããADDITIONAL_LIBRARIES-C ++ãããžã§ã¯ãã«æ¥ç¶ãããã©ã€ãã©ãªã
以äžã®ãµã€ã¯ã«ã¯ãããããŒãšãœãŒã¹ã³ãŒãã®ãªã¹ãã1ã€ã®ãã©ã°å¯èœãªãªã¹ãã«çµåããŸãïŒä»¥åã®ãããªãã¯ãšé衚瀺ã®åºåã¯çŽç²ã«æ¡ä»¶ä»ãã§ããïŒã æåŸã«ãããããžã§ã¯ããå®è¡å¯èœãã¡ã€ã«ã«ã¢ã»ã³ãã«ããã
add_executable ïŒïŒã瀺ãã«ãŒã«ã ãã€ããªãçµã¿ç«ãŠãåŸã
target_link_libraries ïŒïŒã䜿çšããŠãªã³ã¯ã©ã€ãã©ãªã远å ããå¿
èŠããããŸãã ãããžã§ã¯ãã«ãŒã«ãå®çŸ©ãããŸãã
䟿å®äžã
install ïŒïŒã䜿çšããŠ
ã€ã³ã¹ããŒã«ãšã€ã³ã¹ããŒã«ã®ã«ãŒã«ã远å ã§ããŸãã
ãããžã§ã¯ãã®ã«ãŒãã«ãããã«ããã£ã¬ã¯ããªã«ç§»åããå®è¡ããŸã
cmake ..
ã³ãã³ãã©ã€ã³ããã ãã¹ãŠãããŸãããã°ïŒãããŠããŸãããã¯ãã§ãïŒãç§ãã¡ã¯åŸã
-èšå®å®äº
-çæå®äº
-ãã«ããã¡ã€ã«ã¯æ¬¡ã®å Žæã«æžã蟌ãŸããŠããŸãïŒ/ home / username / tmp / fooproj / build
ãµã€ããã€ãµã€ãã¡ã€ã¯ãã¡ã€ã«
ãã®åŸãéåžžã®æ¹æ³ã§
äœã
çµè«ã®ä»£ããã«
ãã®æ¹æ³ã¯ãconfigureãæ§æãããããç°¡åã§äŸ¿å©ã§ããããšãããããŸããã çªç¶ããã«ã€ããŠè°è«ãããå Žåã¯ãã³ã¡ã³ããæ§ããŸãã çç±ã¯ïŒ
äœãã倿ŽããŠcmakeããšã©ãŒãã¹ããŒããå Žåã¯ãæåã«ãã«ããã£ã¬ã¯ããªãããã¡ã€ã«ãã£ãã·ã¥å
šäœãïŒå€§ãŸãã«èšããšïŒåé€ããããå°ãªããšãåããã«ããã£ã¬ã¯ããªããCMakeCache.txtãåé€ããŸãã
ãã¥ãŒããªã¢ã«ã§èæ
®ãããªãã£ããã®ïŒ
1ïŒQtãŸãã¯Boostã©ã€ãã©ãªã®æ¥ç¶
2ïŒã€ã³ã¹ããŒã«æžã¿ã©ã€ãã©ãªã®æ€çŽ¢
3ïŒãã«ããã©ãããã©ãŒã
4ïŒããŸããŸãªã³ã³ãã€ã©ã®ãªãã·ã§ã³
ããã¥ã¡ã³ãïŒ
1ïŒ
ããã¥ã¡ã³ãã®ã¡ã€ã³ããŒãž2ïŒ
ããŒãžã§ã³2.8.9ã®ããã¥ã¡ã³ã3ïŒãã®äžåèªã®åå ã¯
æ·»ä»ãããŠããŸãã