zoukankan      html  css  js  c++  java
  • 用CMakeLists.txt组织工程

    1 一个工程会有多个CMakeLists.txt,如何组织这些CMakeLists.txt来构建一个工程?

    1.1  最外层一个CMakeLists.txt,是总的CMakeList.txt,在这个里面用add_subdirectory来进入各个子目录

    1.2 每个模块一个CMakeLists.txt

    1.3 每个CMakeLists.txt中只设置一个目标

    1.4 多使用cmake预定义的变量和命令使得自己的cmakelists有更高的可移植性

    2 cmake是如何解析这些CMakeLists.txt文件的

     向shell脚本一样,但是如果遇到add_subdirectory的话,就进入子目录处理里面的CMakeLists.txt文件,直到处理完再出来继续处理。

    3 cmake命令不区分大小写,但是变量区分大小写

    4 cmake生成动态库和静态库

    4.1 cmake生成动态库

    add_library的时候,在目标和src文件之间加上SHARED变量即可,就表示要生成动态库。

    4.2 cmake生成静态库

    add_library的时候,在目标和src文件之间加上STATIC变量即可。

    5 cmake安装生成的动态库和静态库

    5.1 cmake生成的目标文件的类型

    archive,存档文件,静态库是archive文件。

    library,库文件,模块库是library文件,非dll的so是library文件,而dll的话,dll部分是runtime文件,供链接的部分是archive文件。

    runtime,可执行文件就是runtime的文件。

    6 如何指定所有类型的生成文件到指定的目录

    使用install命令

    6.1 install命令是什么

    install是cmake的命令,用来生成工程的安装规则。

    6.2 install命令可以用来做什么

    指定要安装的文件

    指定安装的目录

    指定安装文件的权限

    6.3 安装头文件到指定目录

    INSTALL(FILES hello.h DESTINATION include/hello)

    6.4 安装动态库、静态库和可执行文件到指定目录

    INSTALL(TARGETS hello LIBRARY DESTINATION bin)

    INSTALL(TARGETS hello_static ARCHIVE DESTINATION lib)

    INSTALL(TARGETS hell.exe RUNTIME DESTINATION bin)

    7 cmake中常用的变量

    7.1 CMAKE_SOURCE_DIR

    根CMakeLists.txt文件所在的目录。

    7.2 CMAKE_BINARY_DIR

    in source build时,CMAKE_BINARY_DIR等于CMAKE_SOURCE_DIR,当外部编译时,即cmake命令执行的目录。

    8 生成某个工程的目标文件时的固定的模式

    第一步,使用project命令指定该project的名字。

    第二步,使用include_directories指定头文件目录。

    第三步,使用link_directories指定所要链接的库的地址。

    第四步,使用add_executable/add_library指定所要生成的目标。

    第五步,使用target_link_libraries指定目标所要链接的库的名字。

    第三步必须要放在第四步的前面,这是cmake的一个设计得不好的地方。

    9 修改了CMakeLists.txt之后最好是将build目录全部删掉,再执行cmake重新生成,否则会出现一些很奇怪的问题

  • 相关阅读:
    前端开发在手机UC浏览器上遇到的坑
    前端开发在uc浏览器上遇到的坑
    object-fit 解决图片指定大小被压缩问题
    前端新手需要注意的几个问题
    利用apache搭建本地环境
    有简历,为何还要自我介绍?
    移动端项目总结
    JavaScript MVC框架PK:Angular、Backbone、CanJS与Ember(转载)
    Net Core 控制台程序使用Nlog 输出到log文件
    net core服务器缺包,如何在线安装?
  • 原文地址:https://www.cnblogs.com/hustdc/p/6624857.html
Copyright © 2011-2022 走看看