ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
1 cmake ¼Ò°³
MakefileÀ» ¸¸µé±â À§Çؼ qmake¸¦ »ç¿ëÇØ¿Ô´Ù. »ç¿ëÇϱ⠰£´ÜÇϱ⠶§¹®Àε¥, ÀÏ´Ü qmake·Î MakefileÀ» ¸¸µé°í, ȯ°æ¿¡ ¸Â°Ô ¼ÕÀÛ¾÷ÇÏ´Â ½ÄÀÌ´Ù.
°£´ÜÇÑ ¹æ¹ýÀ̱â´Â Çѵ¥, ¿©·¯ Ç÷¿Æû¿¡ Æ÷ÆÃ°¡´ÉÇÑ makefileÀ» ¸¸µé±â°¡ ¿©°£ ±î´Ù·ÓÁö ¾Ê´Ù´Â ¹®Á¦°¡ ÀÖ´Ù. ±×·¡¼ »ç¿ëÇÑ°Ô automake. ±Ùµ¥ À̰Š³Ê¹« º¹ÀâÇÏ´Ù. ±×·¡¼ kdevelop¸¦ ÀÌ¿ëÇØ¼ automake ÆÄÀÏÀ» ¸¸µé°í ¼öÁ¤ÇÏ´Â ¹æ½ÄÀ¸·Î automake¸¦ ÀÌ¿ëÇß´Ù. ¾Æ¸¶ kdevelop3.x ±îÁö automake¸¦ »ç¿ëÇß´ø °ÍÀ¸·Î ¾Ë°í ÀÖ´Ù.
±× µÚ ÇÑ 2³âÀº automake ÅøÀ» Àؾî¹ö¸®°í »ê°Å °°´Ù. ½Ã½ºÅÛ/³×Æ®¿öÅ© ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß¿¡¼ À¥ ¼ºñ½º °³¹ß·Î C/C++ ÇÁ·ÎÁ§Æ®¸¦ ÇÒÀÏÀÌ °ÅÀÇ »ý±âÁö ¾Ê¾Ò±â ¶§¹®ÀÌ´Ù. 1.1 kdevelop ¿Í cmake
ÀÚµ¿ ºôµå Åø¿¡ °ü½ÉÀ» °¡Áö°Ô µÈ °Ç kdevelop¸¦ °³¹ßÅø·Î »ç¿ëÇÏ¸é¼ ºÎÅÍ´Ù. kdevelop.. ÈǸ¢ÇÑ °³¹ßÅøÀ̱ä Çѵ¥, ±×µ¿¾È »ç¿ëÇÏÁö ¾Ê¾Ò´ø ÀÌÀ¯´Â ¼øÀüÈ÷ vim ۸¦ »ç¿ëÇÒ ¼ö ¾ø´Ù´Â °Í ¶§¹®À̾ú´Ù. ±×·±µ¥ ¾ðÁ¨°¡ ºÎÅÍ kdevelop¿¡ vim۰¡ Áö¿øµÇ±â ½ÃÀÛÇß´Ù. 4.0ºÎÅϰ¡ ? ¾Æ¹¸µç ±×·¡¼ kdevelop¸¦ »ç¿ëÇØ±â·Î Çߴµ¥.
ºôµåÅø·Î automake ´ë½Å cmake¸¦ »ç¿ëÇÏ´Â °ÍÀÌ´Ù. 1.2 cmake ¿Í automake
ÀÏ´Ü automake¿¡ ´ëÇÑ ±â¾ïÀº ÁÁÁö ¾Ê´Ù. ºôµå ÆÄÀÏÀ» ¸¸µå´Â°Ô ³Ê¹« º¹ÀâÇ߱⠶§¹®ÀÌ´Ù. Áö±Ýµµ ±×¶§µµ ³ automake ºôµåÆÄÀÏÀ» ¸¸µé ÀÚ½ÅÀÌ ¾ø´Ù. ±×³ª¸¶ kde°¡ ÀÚµ¿À¸·Î ¸¸µé¾îÁá±â ¶§¹®¿¡ »ç¿ëÇßÁö.
cmakeµµ automake¿Í ¸¶Âù°¡Áö·Î ½ºÅ©¸³Æ® ÆÄÀÏÀ» Àоî¼, ÇØ´ç Ç÷§Æû¿¡¼ ºôµåÇϱâ À§ÇÑ ÇÁ·ÎÁ§Æ® ÆÄÀϵéÀ» ¸¸µç´Ù. ¸®´ª½º¶ó¸é Makefile À©µµ¿ì¶ó¸é Visual Studio ÇÁ·ÎÁ§Æ® ÆÄÀÏ, AppleÀº Xcode¸¦ ¸¸µé¾îÁØ´Ù. 2 cmake ½ºÅ©¸³Æ® ¸¸µé±â
CMakeLists.txt¿¡ cmake ¸í·ÉµéÀ» ÀÌ¿ëÇØ¼, ºôµå ±ÔÄ¢À» ¸¸µé¸é µÈ´Ù. Å×½ºÆ®¸¦ À§Çؼ main.c foo.c h heooll.c¸¦ ¸¸µé¾ú´Ù. // main.c #include <stdio.h> #include <hello.h> #include <foo.h> int main(int argc, char **argv) { pthread_self(); hello("yundream"); return 0; } // foo.c #include <foo.h> #include <stdio.h> void foo(int a, int b) { printf("SUM : %d + %d = %d\n", a, b, a+b); } // hello.c #include <hello.h> #include <stdio.h> void hello(char *name) { printf("Hello %s1!\n", name); } PROJECT(myproject)
set(ROOT_DIR /home/yundream/cmake)
set(MYLIB_PATH /home/yundream/cmake/lib)
#set(CMAKE_VERBOSE_MAKEFILE ON)
ADD_EXECUTABLE(hello main.c foo.c hello.c)
set(UNITLIB ${MYAPILIB})
FIND_LIBRARY(MYAPILIB NAMES pthread PATHS /usr/lib)
TARGET_LINK_LIBRARIES(hello sqlite3 pthread ${UNITLIB})
INCLUDE_DIRECTORIES(${ROOT_DIR})
ADD_DEFINITIONS(-Wall -DSQLITE_THREADSAFE=1 -g -O2)
2.1 Makefile ¸¸µé±â
cmake ¸í·ÉÀ¸·Î Makefile¸¦ ¸¸µé¸é µÈ´Ù. # cmake ./ 2.2 ¶óÀ̺귯¸® ¸¸µé±â
ADD_LIBRARY¸¦ ÀÌ¿ëÇØ¼ ¼Ò½ºÄڵ带 °øÀ¯ ¶óÀ̺귯¸®·Î ȤÀº Á¤Àû ¶óÀ̺귯¸®·Î ¸¸µé ¼ö ÀÖ´Ù. # °øÀ¯¶óÀ̺귯¸®·Î ¸¸µé±â ADD_LIBRARY(mylib SHARED hello.c foo.c) # Á¤Àû¶óÀ̺귯¸®·Î ¸¸µé±â ADD_LIBRARY(mylib STATIC hello.c foo.c) 2.3 ¼ºê µð·ºÅ丮·Î °èÃþÀû ÇÁ·ÎÁ§Æ® °ü¸®
ÇÁ·ÎÁ§Æ®¸¦ ÁøÇàÇÏ´Ù º¸¸é, ¼ºê ÇÁ·ÎÁ§Æ®¸¦ °ü¸®ÇؾßÇÒ °æ¿ì°¡ »ý±ä´Ù. ÀÌ °æ¿ì ¼ºê µð·ºÅ丮 º°·Î ÇÁ·ÎÁ§Æ®¸¦ °ü¸®ÇÒ ¼ö ÀÖ´Ù.
³ª´Â À§ÀÇ myproject¸¦ µÎ°³ÀÇ ¼¹ö ÇÁ·ÎÁ§Æ®·Î ³ª´©±â·Î Çß´Ù. Çϳª´Â ÁÖ °³¹ßÀÌ ÀÌ·ç¾îÁö´Â hello ÇÁ·ÎÁ§Æ®°í, ´Ù¸¥ Çϳª´Â ¸ðµâ Å×½ºÆ®¸¦ À§ÇÑ test ÇÁ·ÎÁ§Æ®´Ù. ±×·¡¼ hello ¿Í test µð·ºÅ丮¸¦ ¸¸µé¾ú´Ù.
# pwd /home/yundream/cmaketest # mkdir hello testcmaketestÀÇ MakeLists.txt ÆÄÀÏÀÇ ³»¿ëÀÌ´Ù. PROJECT(myproject) ADD_SUBDIRECTORY(hello) ADD_SUBDIRECTORY(test)
´ÙÀ½Àº hello ¿Í test¿¡ ÀÖ´Â MakeLists.txt ³»¿ëÀÌ´Ù.
#############################
# hello MakeLists.txt
#############################
PROJECT(hello)
ADD_EXECUTABLE(hello main.c foo.c hello.c)
TARGET_LINK_LIBRARIES(hello pthread)
INCLUDE_DIRECTORIES(./)
ADD_DEFINITIONS(-Wall -O2)
# test ¿¡¼ »ç¿ëÇÒ Á¤Àû¶óÀ̺귯¸®¸¦ ¸¸µé¾ú´Ù.
ADD_LIBRARY(mylib STATIC hello.c foo.c)
#############################
# test MakeLists.txt
#############################
PROJECT(test)
set(CMAKE_VERBOSE_MAKEFILE ON)
ADD_EXECUTABLE(test test.c)
# Á¤Àû ¶óÀ̺귯¸®¸¦ ¸µÅ©Çϱâ À§ÇÑ µð·ºÅ丮¸¦ Á¤ÀÇ
FIND_LIBRARY(UNIT_LIB NAMES mylib PATHS /home/yundream/cmaketest/hello)
TARGET_LINK_LIBRARIES(test pthread ${UNIT_LIB})
INCLUDE_DIRECTORIES(../hello)
ADD_DEFINITIONS(-Wall -O2)
|
|
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|