cmake 입문 실전 기초

2329 단어 개발 도구
프로젝트 실례 디렉터리 구조: 주로 프로젝트 내부에서 생성된 라이브러리를 포함하고 외부 삼자에 의존하는 라이브러리를 실현했다.
├── bin │   └── demo_cmake ├── build ├── CMakeLists.txt ├── inc │   └── MathCommon.h ├── lib │   ├── libMathCommon.so │   └── libMathFunctions.a ├── lib_extern │   ├── build │   ├── CMakeLists.txt │   ├── MathCommon.cpp │   └── MathCommon.h ├── lib_inner │   ├── CMakeLists.txt │   ├── MathFunctions.cpp │   └── MathFunctions.h ├── main.cpp ├── Untils.cpp └── Untils.h
홈 디렉토리의 CMakeLists.txt 내용:
#cmake      
cmake_minimum_required(VERSION 2.8)

#    
project(demo_cmake)

#                 
message(STATUS ${CMAKE_BINARY_DIR})
message(STATUS ${CMAKE_SOURCE_DIR})

message(STATUS ${PROJECT_BINARY_DIR})
message(STATUS ${PROJECT_SOURCE_DIR})

#set(CMAKE_BUILD_TYPE "Debug")
#set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")
#set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")

#       
set(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/lib)

#           
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin)

#     
#          ,     gcc -I  
include_directories(${CMAKE_SOURCE_DIR}/inc)

#     
#                ,   gcc -L  
link_directories(${CMAKE_SOURCE_DIR}/lib)

#                 SRC_DIR 
aux_source_directory(. SRC_DIR)
message(STATUS ${SRC_DIR})

#     
add_subdirectory(lib_inner)

#       
#add_executable(demo main.cpp Common.cpp)
add_executable(demo_cmake ${SRC_DIR})

#     ,     -l  
target_link_libraries(demo_cmake MathFunctions MathCommon)

프로젝트 내부 생성 라이브러리 CMakeLists.txt:
aux_source_directory(. LIB_SRC_DIR)

add_library(MathFunctions STATIC ${LIB_SRC_DIR})

#add_library(MathFunctions SHARED ${LIB_SRC_DIR})

프로젝트 외부 생성 라이브러리 CMakeLists.txt:
cmake_minimum_required(VERSION 2.8)


aux_source_directory(. SO_EXTERN_DIR)


add_library(MathCommon SHARED ${SO_EXTERN_DIR})

홈 디렉토리main 함수 코드:
  1 #include
  2 
  3 #include"Untils.h"
  4 
  5 #include"lib_inner/MathFunctions.h"
  6 
  7 #include"MathCommon.h"
  8 
  9 int main()
 10 {
 11         printf("this is a cmake demo test.
"); 12 13 printf_extern_lib(); 14 15 printf_inner_lib(); 16 17 printf_untils(); 18 19 return 0; 20 }

좋은 웹페이지 즐겨찾기