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)



原文地址:https://www.cnblogs.com/kabe/p/7162318.html