CMakeLists 的使用,大型工程使用cmake 的構件過程
CMakeLists_1
PROJECT(hello_2) cmake_minimum_required(VERSION 2.8) #cmake的最低版本 FILE(GLOB SOURCE_1 "${CMAKE_SOURCE_DIR}/main/*.cpp") #下面2句告訴CMake,源文件在哪里?main.cpp FILE(GLOB SOURCE_2 "${CMAKE_SOURCE_DIR}/hello/*.cpp")#程序必須鏈接到hello.cpp里面的SayHello INCLUDE_DIRECTORIES("${CMAKE_SOURCE_DIR}/include/")#告訴CMake頭文件在哪里? ADD_EXECUTABLE(hello_2 ${SOURCE_1} ${SOURCE_2}) #生成可執行文件
CMakeLists_2
-
cmake中
PROJECT(hello) cmake_minimum_required(VERSION 2.8) SET(PROJECT_ROOT_PATH "${CMAKE_SOURCE_DIR}/../") #工程的根目錄,即test SET(EXECUTABLE_OUTPUT_PATH "${CMAKE_SOURCE_DIR}/bin/") #可執行文件生成后存放的目錄(CMAKE_SOURCE_DIR是cmake目錄) SET(LIBRARY_OUTPUT_PATH "${CMAKE_SOURCE_DIR}/lib/") #靜態庫生成后存放的目錄 INCLUDE_DIRECTORIES("${PROJECT_ROOT_PATH}/include/") #告訴CMake頭文件在哪里? LINK_DIRECTORIES("${CMAKE_SOURCE_DIR}/lib/")#告訴CMake靜態庫在哪里? ADD_SUBDIRECTORY(src) #多目錄,把src目錄加進來,src里面才是真正編譯main和hello的
-
- src中
-
ADD_SUBDIRECTORY(main) ADD_SUBDIRECTORY(hello)
- hello中
-
FILE(GLOB SOURCE_1 "${PROJECT_ROOT_PATH}/hello/hello.cpp") #告訴CMake,源文件在哪里? ADD_LIBRARY(hello STATIC ${SOURCE_1}) #打包成hello靜態庫 *.a---如果想生成動態庫*.so,將STATIC變為SHARED
- main中
-
FILE(GLOB SOURCE_1 "${PROJECT_ROOT_PATH}/main/main.cpp") ADD_EXECUTABLE(main ${SOURCE_1}) #生成可執行文件 TARGET_LINK_LIBRARIES(main hello) #並在可執行文件上連接到這個庫