2017网站开发兼职,免费营销型wordpress模板,网站开发重庆,零基础网站建设教学服务目录
项目格式
cmake基本语法
设置编译器 添加库
链接库
添加库的头文件
cmake打印字符串
库的cmake文件
cmake生辰库
mian函数中使用
让库成为可选的
cmake基本语法
设置option变量
cmake设置条件链接库
链接库
添加头文件
修改cmake配置文件
修改引用的源码…目录
项目格式
cmake基本语法
设置编译器 添加库
链接库
添加库的头文件
cmake打印字符串
库的cmake文件
cmake生辰库
mian函数中使用
让库成为可选的
cmake基本语法
设置option变量
cmake设置条件链接库
链接库
添加头文件
修改cmake配置文件
修改引用的源码
更新链接库的过程
${CMAE_CURRENT_SOURCE_DIR} 项目格式
Step2 mathFunctions/CMakeLists.txt mysqrt.cxx MathFunctions.h CMakeList.txt tutorial.cxx Tutorial.h.in cmake基本语法
设置编译器
set (CMAKE_C_COMPILER D:/Program Files/LLVM/bin/gcc)set (CMAKE_CXX_COMPILER D:/Program Files/LLVM/bin/g)
CMAKE_C_COMPILER C语言编译器CMAKE_CXX_COMPILER C编译器。 添加库
add_subdirectory(MathFunctions)
添加的MathFunctions就是文件夹的名字也可以理解为库的名字
链接库
target_link_libraries(Tutorial PUBLIC MathFunctions)
第一个参数是生成的可执行文件,中间的是公有的,第三个参数是库的名字.
添加库的头文件
target_include_directories(Tutorial PUBLIC ${PROJECT_SOURCE_DIR}/MathFunctions ${PROJECT_BINARY_DIR})
第一个参数是生成的可执行文件,中间的是公有的,第三个参数是库的路径,应该说后面的参数都是路径.
其中:
${PROJECT_SOURCE_DIR} 这个变量是主Cmake文件的变量
${PROJECT_BINARY_DIR}这个变量是cmake -B生成的路径的变量 cmake打印字符串
message(hello world)
message(${PROJECT_SOURCE_DIR}/MathFunctions) 这个就是打印出来的字符串. 库的cmake文件 这个cmake文件不需要写那么多公共命令.
cmake生辰库
add_library(MathFunctions mysqrt.cxx)
这行代码就是把cxx文件添加到库中 mian函数中使用
添加头文件
#include MathFunctions.h
可以直接使用尖括号,因为cmake已经把头文件添加到可执行文件中了.
然后直接调用函数即可. 让库成为可选的
cmake基本语法
设置option变量
option(USE_MYMATH Use tutorial provided math implementation ON)
设置一个USE_MATH的变量,第二个参数是说明字符串,第三个是启动或者关闭 ON是启动,OFF是关闭.
注意:option这个设置变量一定要在configure_file(TutorialConfig.h.in TutorialConfig.h)这行前面才可以,要不然option设置的不起作用.
cmake设置条件链接库
if (USE_MYMATH)add_subdirectory(MathFunctions)list(APPEND EXTRA_LIBS MathFunctions)list(APPEND EXTRA_INCLUDES ${PROJECT_SOURCE_DIR})
endif()
意思是如果USE_MYMATH为ON才可以链接自己的库
其中强调两行代码就是list的代码 list(APPEND EXTRA_LIBS MathFunctions) list(APPEND EXTRA_INCLUDES ${PROJECT_SOURCE_DIR})
这两行代码你可以理解为依赖的库声明成一个变量列表,例如EXTRA_LIBS这个变量就是存储的MathFunctions这个库这里只有一个demo如果要链接十个八个只要在list后面空格添加就行,
EXTRA_INCLUDES这个也是同理,目的也是为了下面添加链接库和添加头文件的时候简单一点. 链接库
target_link_libraries(Tutorial PUBLIC ${EXTRA_LIBS})
这里就用到EXTRA_LIBS 这个列表 添加头文件
target_include_directories(Tutorial PUBLIC ${EXTRA_INCLUDES}${PROJECT_BINARY_DIR})
这里就用到EXTRA_INCLUDES这个列表 修改cmake配置文件
#cmakedefine USE_MYMATH
添加一行这个代码
USE_MYMATH这个变量就是对应一开始的option设置的变量
如果option设置USE_MYMATH为ON, cmake配置文件生成的头文件就会定义USE_MYMATH 这个不是自己写的是cmake自己生成的. 修改引用的源码 更新链接库的过程
如果每次主cmake文件每次链接一个库都要target_include_directories一个库名字就有点重复所以可以修改cmake库来实现当链接这个库的时候就包含头文件了。
第一步就是修改库的cmake文件
add_library(MathFunctions mysqrt.cxx)target_include_directories(MathFunctionsINTERFACE${CMAKE_CURRENT_SOURCE_DIR})target_include_directories(MathFunctions INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
第一行代码是添加库名字第二行是添加库的头文件第一个参数是库的名字
INTERFACE第二个参数意思是当链接这个库的时候就要包含include第三个参数的头文件但是自己的库不使用头文件
还有一个PUBLIC
PUBLIC这个的意思是不光链接这个库的需要使用库头文件自己也是用。一般这个使用的比较多。
第三个参数就是头文件的路径
${CMAE_CURRENT_SOURCE_DIR}
这个变量是什么意思了这个意思是当前cmake文件的目录这个变量和${PROJECT_SOURCE_DIR}这个变量比较相似这个是指定项目当前的路径。
主cmake文件就可以把上面链接MathFunctions文件可以删除了。