• CMake实践(4)


    一,本期目标:

    [sun@localhost t4]$ cat README
    任务:如何使用外部共享库和文件

    二,目录结构

    [sun@localhost t4]$ tree ../t4
    ../t4
    ├── CMakeLists.txt
    ├── README
    └── src
        ├── CMakeLists.txt
        └── main.cpp

    1 directory, 4 files

    三,CMakeLists.txt

    [sun@localhost t4]$ cat CMakeLists.txt
    PROJECT(NEW_HELLO)
    cmake_minimum_required(VERSION 2.6)
    ADD_SUBDIRECTORY(src)
    [sun@localhost t4]$ cat src/CMakeLists.txt
    PROJECT(main)
    #注意:如果工程有依赖库的话,ADD_EXECUTABLE指令要放在LINK_DIRECTORIES指令之后,
    #       不然会报错:Linking C executable main
    #                   /usr/bin/ld: cannot find -lhello
    #                   collect2: ld 返回 1
    #ADD_EXECUTABLE(main main.cpp)

    #1)增加头文件搜索路径,解决编译期间找不到头文件的问题
    INCLUDE_DIRECTORIES(../../t3/lib)

    #2)增加库文件: 解决链接期间找不到调用外部接口的问题
    #main.cpp:(.text+0x5): undefined reference to `HelloFunc()'
    #collect2: error: ld returned 1 exit status

    #3)增加库文件搜索路径:解决链接期间找不到库文件的问题
    #/usr/bin/ld: cannot find -lhello
    #collect2: error: ld returned 1 exit status
    #好像相对路径会找不到库文件
    LINK_DIRECTORIES(../../t3/lib /home/TOM/cmake_practice/cmake/t3/lib)

    ADD_EXECUTABLE(${PROJECT_NAME} main.cpp)

    TARGET_LINK_LIBRARIES(${PROJECT_NAME} hello) #链接动态库指令
    #TARGET_LINK_LIBRARIES(${PROJECT_NAME} libhello.a)  #链接静态库指令


    #COMMAND: INCLUDE_DIRECTORIES([AFTER|BEFORE] [SYSTEM] dire1 dire2 ...)
    #定义:向工程添加多个特定的头文件搜索路径,路径之间用空格分开,
    #       如果路径中包含空格,可以使用双引号括起来
    #       默认是追加到当前的头文件搜索路径之后,你可以用2种方式控制搜索路径的添加方式
    #       1)CMAKE_INCLUDE_DIRECTORIES_BEFORE 通过SET设置其为on,使用前置模式
    #       2)通过AFTER或BEFORE参数,控制追加还是置前

    #COMMAND: LINK_DIRECTORIES(dir1 dir2 ...)
    #定义:添加非标准的共享库搜索路径

    #COMMAND: TARGET_LINK_LIBRARIES(target  library1
    #                                <debug | optimized> library2
    #                                ...)
    #定义:用来为target添加需要链接的共享库

    四,运行结果:

    (略)

  • 相关阅读:
    文件下载的几种方式
    获取文件的后缀名(转为数组) 字符串和变量的拼接 HTML中字符串和变量的拼接
    小程序之选择拍照或者本地相册
    实时显示时间
    uni-app事件冒泡 如何解决事件冒泡 推荐tap事件
    Codeforces Global Round 7 C. Permutation Partitions(组合数学)
    Codeforces Global Round 7 B. Maximums(逻辑)
    Codeforces Global Round 7 A. Bad Ugly Numbers(数学)
    Codeforces Round #622 (Div. 2) C2. Skyscrapers (hard version)(单调栈,递推)
    Codeforces Round #622 (Div. 2) B. Different Rules(数学)
  • 原文地址:https://www.cnblogs.com/jacklikedogs/p/3780064.html
Copyright © 2020-2023  润新知