• cmake常用命令总结


    最近研究了下cmake,总结了一些常用命令,方便以后快速查找。

    1. project(projectname [CXX] [C] [Java]):

      1. 设置工程名。
    2. set(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]]):

      1. 设置变量VAR为指定值。
      2. 例子:set(CXX_FLAGS -g -Wall)。将变量CXX_FLAGS设置为"-g;-Wall"。其中以分号分隔。
    3. include_directories([AFTER|BEFORE] [SYSTEM] dir1 dir2 ...):

      1. 将dir1, dir2作为include搜索路径。
    4. find_package( [major.minor] [QUIET] [NO_MODULE] [[REQUIRED|COMPONENTS] [components...]]):

      1. 暂时不是很理解。
      2. 例子:find_package(Threads REQUIRED)
    5. add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL]):

      1. source_dir下的CmakeLists.txt也会被处理。
    6. 编译链接动作:

      1. add_library(libname [SHARED | STATIC | MODULE] [EXCLUDE_FROM_ALL] source1 source2 ... sourceN):
        1. 使用指定源文件生成库文件。该库文件会存储于CMAKE_ARCHIVE_OUTPUT_DIRECTORY或者CMAKE_LIBRARY_OUTPUT_DIRECTORY指定的目录。
      2. add_executable(exename [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] source1 source2 ... sourceN):
        1. 使用指定源文件生成可执行文件。会存储于CMAKE_RUNTIME_OUTPUT_DIRECTORY指定的位置。
      3. target_link_libraries(target library1 <debug | optimized> library2 ...):
        1. 将库文件链接到目标文件。
    7. 内置变量:

      1. 基础目录:
        1. PROJECT_SOURCE_DIR:执行cmake的目录。比如我在/mnt/d/work/cpp/NanoSTL/build目录下执行cmake ..,虽然根CMakelists.txt位于/mnt/d/work/cpp/NanoSTL,PROJECT_SOURCE_DIR的值还是/mnt/d/work/cpp/NanoSTL/build。
        2. PROJECT_BINARY_DIR:工程根目录。比如根CMakelists.txt位于/mnt/d/work/cpp/NanoSTL,那么该变量就是/mnt/d/work/cpp/NanoSTL。
      2. CMAKE_CXX_FLAGS:编译器选项。
      3. 输出目录:
        1. CMAKE_ARCHIVE_OUTPUT_DIRECTORY:编译后.a文件存储位置。
        2. CMAKE_LIBRARY_OUTPUT_DIRECTORY:动态链接文件.so存储位置。
        3. CMAKE_RUNTIME_OUTPUT_DIRECTORY:可执行文件存储位置。
    8. 常用链接:

      1. cmake官方文档
  • 相关阅读:
    go 本地安装 grpc-go
    vscode python code-runner 中文乱码解决
    spring-cloud-sleuth 学习资源
    vscode 快键键资源整理
    vscode and python
    redis分布式锁
    TF-IDF算法解释
    spring 4.1 xml配置头部信息 maven配置信息
    google像apple 30亿美元购买流量
    spring 启动异常Failed to read candidate component class
  • 原文地址:https://www.cnblogs.com/gatsby123/p/10885555.html
Copyright © 2020-2023  润新知