美文网首页
cmake的几个常用语法整理

cmake的几个常用语法整理

作者: 吉凶以情迁 | 来源:发表于2019-01-07 14:30 被阅读0次

    1、find_library
    寻找库
    此命令用于查找库。<VAR>创建名为的缓存条目以存储此命令的结果。如果找到库,则结果存储在变量中,除非清除变量,否则不会重复搜索。如果找不到任何内容,结果将是 <VAR>-NOTFOUND,并且下次使用相同变量调用find_library时将再次尝试搜索。

    find_library( # Sets the name of the path variable.
                  log-lib
                  # Specifies the name of the NDK library that
                  # you want CMake to locate.
                  log )
    

    寻找log 存储为log-lib变量
    https://cmake.org/cmake/help/v3.6/command/find_library.html
    其它find_也类似

    2、target_link_libraries
    链接库 也就是把当前库和其他库合并
    link_libraries 链接静态库 通常做导入操作,很少用到

    3、add_library
    添加库 同时是把源码合并生成一个动态库名
    通常执行add_library之后调用target_link_libraries
    4、include_directories 添加头文件目录
    5、add_subdirectory添加cmake目录
    6、set_target_properties
    可以把一个静态库变成一个变量然后通过
    7、target_link_libraries合并

    8、find_path
    9、find_package
    10、aux_source_directory(directory varname) 添加多个c++’文件 参数1为目录名,2为变量名, 就是把多个东西融合为一个变量,也可以用.融合当前所有。

    使用本地文件静态库举例

    #[[
    include_directories(otheheadfile) #这个源文件和另外一个文件的根目录不是同一个,也可以达到识别效果。
    
    file(GLOB SRCS "${PROJECT_SOURCE_DIR}/jni/global/*.cpp")
    add_executable(callstatic callstatic.c)
    add_library(mystatic
            STATIC
            IMPORTED)
    set_target_properties(mystatic
            PROPERTIES IMPORTED_LOCATION
            ${PROJECT_SOURCE_DIR}/lib/libmystatic.a)
    target_link_libraries(callstatic mystatic)
    message("compile call staticlib.... c use c static lib")
    message("------------------------------------------------")
    
    ]]
    

    使用cmake产生的静态库举例

    假设cmake中有一句话

    add_library(qssqstatic STATIC xxxx)
    

    那么执行的话是

    set_target_properties(qssqstatic PROPERTIES OUTPUT_NAME "qssqstatic")
    target_link_libraries(wxplus2 qssqstatic )
    

    这里wxplus2就是动态库或者可执行文件,而qssqstaticadd_library产生的静态库

    使用动态库举例

    #[[
    include_directories(otheheadfile) 
    
    file(GLOB SRCS "${PROJECT_SOURCE_DIR}/jni/global/*.cpp")
    add_executable(ccallcdynamic calldynamic.c)
    
    # static need set_target_properties() but dynamic not need
    link_directories(lib)#从 lib目录查找
    # 设置第三方动态库属性(存储位置) armeabi-v7a
    add_library(MYDYNAMIC
                 SHARED
                 IMPORTED)
    
    set_target_properties(MYDYNAMIC  PROPERTIES IMPORTED_LOCATION ${PROJECT_SOURCE_DIR}/lib/libmydynamic.so)
    target_link_libraries(ccallcdynamic MYDYNAMIC)
    
    
    message("compile ccallcdynamic ....")
    message("------------------------------------------------")
    ]]
    
    

    更多举例参考我github源码

    这个文章也写的不错
    https://www.jianshu.com/p/8909efe13308

    相关文章

      网友评论

          本文标题:cmake的几个常用语法整理

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