cmake 学习-cmakelists.txt
Posted 卡贝天师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)
以上是关于cmake 学习-cmakelists.txt的主要内容,如果未能解决你的问题,请参考以下文章
cmake - CMakeLists.txt 不在根文件夹中(但包含在源代码中)