cmake编译常见命令

 

1、PROJECT_SOURCE_DIR/CMAKE_SOURCE_DIR/_SOURCE_DIR:为包含PROJECT()命令的最近一个CMakeLists.txt文件所在的文件夹路径。
2、PROJECT_BINARY_DIR 运行cmake命令的目录,即工程编译发生的路径
例如:
PROJECT_SOURCE_DIR:/opt/c++/ctest/test
PROJECT_BINARY_DIR:/opt/c++/ctest/test/build

3、PROJECT_NAME:本CMakeLists.txt的project名称
例:project(TTU)

4、add_subdirectory(子文件夹名称): 编译子文件夹中的CMakeLists.txt,子文件夹中必须有CMakeList.txt
例:add_subdirectory(commiec)
  add_subdirectory(src  bin)将src子目录加入工程,并指定编译输出(包含编译中间结果)路径为bin目录
5、EXECUTABLE_OUTPUT_PATH: 指定最终的可执行文件的位置 例:SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib) 6、SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib) 设置库文件的输出目录 例:SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib) 5/6两变量在新版本中已被`CMAKE_RUNTIME_OUTPUT_DIRECTORY`和`CMAKE_ARCHIVE_OUTPUT_DIRECTORY`代替

 

 

project(xxx)    

set(CMAKE_C_FLAGS "-std=gnu99")
set(CMAKE_CXX_FLAGS "-std=c++11")                                      #必须

# include_directories(路径),规定.h头文件路径
include_directories(../libpub/rapidxml)

# 给文件名/路径名或其他字符串起别名,用${变量}获取变量内容
SET(SRC_LIST test01aaa.cpp )

# add_subdirectory(子文件夹名称)                         #父目录必须,子目录不必
add_subdirectory(commi) 


# 将.cpp
/.c/.cc文件生成.a静态库 # 注意,库文件名称通常为libxxx.so,在这里只要写xxx即可 add_library(库文件名称 STATIC 文件) #通常子目录(二选一) # add_executable(可执行文件名称 文件),将.cpp/.c/.cc文件生成可执行文件 #通常父目录(二选一) add_executable(104 ${SRC_LIST}) #EXECUTABLE_OUTPUT_PATH: 指定最终的可执行文件的位置 SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin/) #LIBRARY_OUTPUT_PATH变量用来指定最终的目标二进制的位置

SET(EXECUTABLE_OUTPUT_PATH $(PROJECT_BINARY_DIR}/bin) #指定二进制文件安装路径
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib) #指定共享库文件安装路径

lib库:
ADD_LIBRARY(hello SHARED ${BIBHELLO_SRC})
hello:是正常的库名,生成的名字前会加上lib,最终产生的文件是libhello.so。
SHARED,动态库
STATIC,静态库
${LIBHELLO_SRC):源文件

link_directories(路径) #必须 # 对add_library或add_executable生成的文件进行链接操作 # 注意,库文件名称通常为libxxx.so,在这里只要写xxx即可 # target_link_libraries(库文件名称
/可执行文件名称 链接的库文件名称) #必须 TARGET_LINK_LIBRARIES(IEC104 mqttpub jsoncpp paramshm dblite pub)

 

posted @ 2023-02-08 08:22  小小仓鼠  阅读(665)  评论(0编辑  收藏  举报