在project目录下的树结构如下:
1 root@u18:~/cp/project# tree 2 . 3 ├── 3rd_lib //存放 第三方库 的目录 4 │ ├── libvirt-lxc.so 5 │ ├── libvirt-qemu.so 6 │ └── libvirt.so 7 ├── build //执行Cmake ..的目录 8 ├── CMakeLists.txt 9 ├── include //头文件目录 10 │ └── libvirt 11 │ ├── libvirt-domain.h 12 │ ├── libvirt-domain-snapshot.h 13 │ ├── libvirt-event.h 14 │ ├── libvirt.h 15 │ ├── libvirt-host.h 16 │ ├── libvirt-interface.h 17 │ ├── libvirt-lxc.h 18 │ ├── libvirt-network.h 19 │ ├── libvirt-nodedev.h 20 │ ├── libvirt-nwfilter.h 21 │ ├── libvirt-qemu.h 22 │ ├── libvirt-secret.h 23 │ ├── libvirt-storage.h 24 │ ├── libvirt-stream.h 25 │ └── virterror.h 26 └── src //代码目录 27 ├── LibvirtConfig.h 28 ├── LibvirtConfig.h.in 29 ├── libvirt.cpp 30 └── Libvirt.h.in 31 32 5 directories, 23 files
CMakeList文件内容如下:
1 cmake_minimum_required (VERSION 2.6) 2 3 #PROJECT(projectname [CXX] [C] [Java]) 编译语言 4 project (Libvirt CXX) 5 6 #The version number 7 set (Libvirt_VERSION_MAJOR 1) 8 set (Libvirt_VERSION_MINOR 0) 9 10 #configure a header file to pass some of the source code 11 configure_file ( 12 "${PROJECT_SOURCE_DIR}/src/LibvirtConfig.h.in" 13 "${PROJECT_BINARY_DIR}/src/LibvirtConfig.h" 14 ) 15 16 # equal to echo in shell 17 MESSAGE(STATUS "This is source dir: " ${PROJECT_SOURCE_DIR}) 18 MESSAGE(STATUS "This is binary dir: " ${PROJECT_BINARY_DIR}) 19 20 #add sub dir and find CMakeList.txt in the sub dir, done it 21 #ADD_SUBDIRECTORY(subdir) 22 23 #将一个文件下的编译用的源文件添加到一个宏列表中 24 #AUX_SOURCE_DIRECTORY(. SRC_LIST) 25 #只将.cc .cpp .c 的文件添加到SRC_LIST中,.h除外 26 27 28 #将.h文件也添加进来,使用 29 INCLUDE_DIRECTORIES("${PROJECT_BINARY_DIR}/src") 30 FILE(GLOB_RECURSE SOURCE_FILE ./src/*.cpp ./src/*.c) 31 FILE(GLOB_RECURSE HEADER_FILE *.h *.hpp) 32 33 MESSAGE(STATUS "This is source dir: " ${SOURCE_FILE}) 34 #MESSAGE(STATUS "This is header dir: " ${HEADER_FILE}) 35 #add the binary tree to the search path for include files so that we will find LibvirtConfig.h 36 #include_directories ("${PROJECT_BINARY_DIR}/src", "${PROJECT_BINARY_DIR}/INCLUDE/libvirt") 37 38 #add the 3rd_lib 39 #link_directories("${PROJECT_BINARY_DIR}/3rd_Lib") 40 FILE(GLOB_RECURSE LIB_FILE libvirt.so*) 41 42 MESSAGE(STATUS "This is 3rd_lib file : " ${LIB_FILE}) 43 44 #add the executable 45 add_executable(Libvirt ${SOURCE_FILE}) 46 47 #link 48 TARGET_LINK_LIBRARIES(Libvirt ${LIB_FILE})
操作步骤:
1、进入build目录,执行cmake .. (因为CMakelist文件在上一级目录中),生成Makefile文件
2、执行make即可