cmake常用命令解析

关键字

  • project可以⽤来指定⼯程的名字和⽀持的语⾔,默认⽀持所有语⾔。eg. project(HELLO)project(HELLO CXX)
  • set⽤来显式指定变量,eg. set(SRC_LIST main.cpp)
  • message向终端输出用户自定义的信息,主要包含三种信息:
    • SEND_ERROR,产⽣错误,⽣成过程被跳过
    • SATUS,输出前缀为—的信息
    • FATAL_ERROR,⽴即终⽌所有 cmake 过程
    • eg. message(STATUS "This is SOURCE dir "${HELLO_SOURCE_DIR})
  • add_executable⽣成可执⾏⽂件,eg. ADD_EXECUTABLE(hello ${SRC_LIST}) ⽣成的可执⾏⽂件名是hello,源⽂件读取变量SRC_LIST中的内容,也可以直接写ADD_EXECUTABLE(hello main.cpp)
  • add_subdirectory⽤于向当前⼯程添加存放源⽂件的⼦⽬录,并可以指定中间⼆进制和⽬标⼆进制存放的位置。eg. ADD_SUBDIRECTORY(src bin) 将src⼦⽬录加⼊⼯程并指定编译输出(包含编译中间结果)路径为bin⽬录;如果不进⾏ bin ⽬录的指定,那么编译结果(包括中间结果)都将存放在build/src ⽬录。
  • include_directories可以⽤来向⼯程添加多个特定的头⽂件搜索路径,路径之间⽤空格分割。eg. INCLUDE_DIRECTORIES(/usr/include/hello)
  • set指令重新定义executable_output_path和library_output_path变量,来指定最终的⽬标⼆进制的位置。
    • SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
    • SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
  • target_link_libraries(可执行文件名 链接库路径)需要放在add_executable之后,用于指定exe文件生成后,该文件要和什么动态库进行链接。eg. target_link_libraries(motionaveraging /home/dz/cnpy/build/libcnpy.so)

其他

  • 变量使⽤${}⽅式取值,但是在 IF 控制语句中是直接使⽤变量名
  • 指令(参数 1 参数 2…) 参数使⽤括弧括起,参数之间使⽤空格或分号分开
  • 指令是⼤⼩写⽆关的,参数和变量是⼤⼩写相关
  • SET(SRC_LIST main.cpp) 可以写成SET(SRC_LIST “main.cpp”),如果源⽂件名中含有空格,就必须要加双引号
  • ADD_EXECUTABLE(hello main) 后缀可以不写,它会⾃动去找.c和.cpp,最好不要这样写,可能会有这两个⽂件main.cpp和main
  • 要创建子目录,则每一个目录下都需要有一个CMakeLists.txt说明

猜你喜欢

转载自blog.csdn.net/weixin_44120025/article/details/131346831
今日推荐