cmake 學習-cmakelists.txt


 
         
 #設置庫的路徑,電腦里有qt4以及qt5,使用qt5時 設置qt5的環境變量(路徑)。
1 set(CMAKE_PREFIX_PATH $ENV{QTDIR})                                                                        
 2 #設定工程名稱
 3 Project(proname)
 4 #設置CMake最低版本要求
 5 cmake_minimum_required(VERSION 3.6.0)
 6 
 7 #設置需要用到的Qt模塊
 8 
 9 FIND_PACKAGE(Qt5Core) 
#包含qt5core的頭文件
10 include_directories(${Qt5Core_INCLUDE_DIRS}) 11 12 #設置Boost靜態庫路徑,電腦中有不同版本的boost選擇自己需要的 13 SET(Boost_LIBRARY_DIRS $ENV{BOOST_ROOT16}/lib32-msvc-14.0) 14 SET(Boost_INCLUDE_DIRS $ENV{BOOST_ROOT16}) 15 SET(Boost_LIBRARIES boost_date_time-vc140-mt-1_62.lib boost_date_time-vc140-mt-gd-1_62.lib) 16 #設置Qt包含的靜態庫 17 link_directories($ENV{QTDIR}\\lib) 18 set(QT_LIBRARIES Qt5::Core) 19 20 #一些設置項 21 set(QT_USE_QTSQL TRUE) 22 23 24 #增加宏定義 25 if(WIN32) 26 add_definitions(-D_CRT_SECURE_NO_DEPRECATE) 27 endif(WIN32) 28 29 add_definitions(-DPRONAME) 30 add_definitions(-DQT5) 31 32 33 #定義變量 34 SET(CMAKE_BUILD_TYPE "Debug") 35 set(LIB_DIR ${PROJECT_SOURCE_DIR}/lib) 36 37 38 #定義一些包含路徑 39 SET(ANALYZER_SRC ${PROJECT_SOURCE_DIR}/src) 40 41 #工具鏈 42 if(ARM) 43 SET(CMAKE_CXX_COMPILER arm-linux-g++) 44 endif() 45 46 47 #添加子目錄,進一步Make 4 49 add_subdirectory(src) 50 51 #多核編譯 52 if(WIN32) 53 set_target_properties(proname PROPERTIES COMPILE_FLAGS "/MP") 54 else(WIN32) 55 endif(WIN32)

src目錄下cmakelists.txt

#創建一系列的變量
set(moc_files
1.h
2.h
)

set(header_files
1.h
2.h
)
set(source_files
1.cpp
2.cpp
)

#頭文件路徑
include_directories(
./
${PROJECT_SOURCE_DIR}
${Boost_INCLUDE_DIRS}
)

#通過include導入子文件
include("${CMAKE_CURRENT_SOURCE_DIR}/book2/CMakeLists.rules")

#moc
QT5_WRAP_CPP(HEADER_MOCS ${moc_files})
SOURCE_GROUP("moc_cxx" FILES ${HEADER_MOCS})


# HOST鏈接庫路徑
link_directories(${Boost_LIBRARY_DIRS} )


#最終目標文件
add_definitions ("-D${MYDLL}_LIB")
set(LIBRARY_OUTPUT_PATH ${LIB_DIR})
add_library(${MYDLL} SHARED ${moc_files} ${source_files} ${header_files} ${HEADER_MOCS})
target_link_libraries(${MYDLL} ${MYDLL_LINK_LIST}) # MYDLL_LINK_LIST通過set設置的一些lib
#多核編譯
if(WIN32)
set_target_properties(${MYDLl} PROPERTIES COMPILE_FLAGS "/MP") #多核編譯
else(WIN32)
endif(WIN32)



 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM