美文网首页
cmake设置生成文件的位置

cmake设置生成文件的位置

作者: FoolishFlyFox | 来源:发表于2019-05-07 21:42 被阅读0次

    本文主要分析cmake中4个变量的区别:

    1. CMAKE_ARCHIVE_OUTPUT_DIRECTORY:默认存放静态库的文件夹位置;
    2. CMAKE_LIBRARY_OUTPUT_DIRECTORY:默认存放动态库的文件夹位置;
    3. LIBRARY_OUTPUT_PATH:默认存放库文件的位置,如果产生的是静态库并且没有指定 CMAKE_ARCHIVE_OUTPUT_DIRECTORY 则存放在该目录下,动态库也类似;
    4. CMAKE_RUNTIME_OUTPUT_DIRECTORY:存放可执行软件的目录;

    上面就是结论,如果你理解了,下面的实验就不需要看了。如果没有理解,请根据实验进行理解。

    linux在程序编译过程中产生的3类有用文件为:.a结尾的静态库文件,.so结尾的动态库文件和可执行文件。下面我们通过一个立在来说明上面4个变量的使用。

    构建一个结构如下的文件夹:
    .
    ├── CMakeLists.txt
    ├── archive
    ├── fun
    │ ├── CMakeLists.txt
    │ └── fun.cpp
    ├── library
    ├── output
    └── runtime
    其中 ./CMakeListLists.txt 的内容为:

    cmake_minimum_required(VERSION 3.1) 
    project(TEST)
    set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/archive)
    set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/library)
    set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/runtime)
    set(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/path)
    add_subdirectory(fun)
    

    fun/CMakeLists.txt 的内容为:

    cmake_minimum_required(VERSION 3.1) 
    project(fun)
    add_library(fun fun.cpp)
    

    fun/fun.cpp 的内容为:

    int add(int a, int b){return a+b;}
    int main(){return 0;}
    

    测试 CMAKE_ARCHIVE_OUTPUT_DIRECTORY

    • 执行 cmake .; make,可以在 archive 下看见产生了静态库文件 libfun.a

    • 如果将 ./CMakeLists.txt 中的第3行注释掉,执行 make,可以发现在 path 下产生了 libfun.a

    • 如果将 ./CMakeLists.txt 中的第3行、第6行都注释掉,执行 make,可以发现在 fun 下产生了 libfun.a

    测试 CMAKE_LIBRARY_OUTPUT_DIRECTORY

    • 先将 fun/CMakeLists.txt 的第三行修改为:add_library(fun SHARED fun.cpp)
    • 执行 make,可以在 library 目录下看到 libfun.so 文件 (如果是mac os系统,则可以看到 libfun.dylib)
    • 如果将 ./CMakeLists.txt 中的第4行注释掉,执行 make,可以发现在 path 下产生了 libfun.so 文件;
    • 如果将 ./CMakeLists.txt 中的第4行、第6行都注释掉,执行 make,可以发现在 fun 下产生了 libfun.so 文件;

    测试 CMAKE_RUNTIME_OUTPUT_DIRECTORY

    • 先将 fun/CMakeLists.txt 的第三行修改为:add_executable(exe_file fun.cpp)
    • 执行 make,在 runtime 下创建了可执行文件 exe_file
    • ./CMakeLists.txt 中的第5行注释掉,执行 makeexe_filefun 文件夹下创建。

    通过上面的3个实验应该就可以理解4个变量的作用了。

    相关文章

      网友评论

          本文标题:cmake设置生成文件的位置

          本文链接:https://www.haomeiwen.com/subject/ugquoqtx.html