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
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) #並在可執行文件上連接到這個庫