CMAKER

    xiaoxiao2021-12-14  17

    CMAKE 的一些命令

    http://www.cnblogs.com/coderfenghc/archive/2012/10/20/2712806.html

    假设有一个TestHttpClient Solution,这个Solution下分别有TestHttpClient工程(可执行程序)和HttpClient工程(动态库)。

    这样我们需要三个CMakeLists.txt文件。其中HttpClient还依赖了libcurl第三方库。

    下面分别是不同目录下的CMakeLists.txt文件清单

    Solution目录

    [html] view plain copy PROJECT(TestHttpClient)     CMAKE_MINIMUM_REQUIRED(VERSION 2.8)     #要显示执行构建过程中详细的信息(比如为了得到更详细的出错信息)   SET( CMAKE_VERBOSE_MAKEFILE ON )      #添加子目录   ADD_SUBDIRECTORY(HttpClient)   ADD_SUBDIRECTORY(TestHttpClient)  

    HttpClient目录

    [html] view plain copy MESSAGE(STATUS "This is TestHttpClient_SOURCE_DIR="${TestHttpClient_SOURCE_DIR})   MESSAGE(STATUS "This is CMAKE_SOURCE_DIR="${CMAKE_SOURCE_DIR})   #添加头文件搜索路径   INCLUDE_DIRECTORIES(${TestHttpClient_SOURCE_DIR}/HttpClient)      #用于将当前目录下的所有源文件的名字保存在变量 LIB1_SRCS 中   AUX_SOURCE_DIRECTORY(. LIB_SRC)     #把编译出来的库文件输出到项目的lib目录下   #例如运行“cmake ..”的目录为build,则在build/lib目录下生成   SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)     #output library name is  libHttpClient.so   ADD_LIBRARY(HttpClient SHARED ${LIB_SRC})      #查找libcurl依赖,如果没有找到则终止cmake继续运行,否则链接目标文件。   #输出FATAL_ERROR级别信息,会终止cmake。   #在CentOS6.5下使用“sudo yum install curl-devel”命令安装curl-dev依赖包即可   FIND_PACKAGE(CURL)   IF(CURL_FOUND)    INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIR})    TARGET_LINK_LIBRARIES(HttpClient ${CURL_LIBRARY})   ELSE(CURL_FOUND)    MESSAGE(FATAL_ERROR "CURL library not found")   ENDIF(CURL_FOUND)  

    TestHttpClient目录

    [html] view plain copy #把编译出来的可执行文件输出到项目的bin目录下   #例如运行“cmake ..”的目录为build,则在build/bin目录下生成   SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)     #CMake运行时,打印路径   MESSAGE(${PROJECT_SOURCE_DIR}/HttpClient)      #添加库文件搜索路径   LINK_DIRECTORIES(${PROJECT_BINARY_DIR}/lib)     #用于将当前目录下的所有源文件的名字保存在变量 APP_SRCS 中   AUX_SOURCE_DIRECTORY(. APP_SRC)      #如果调用"CMake -D DEBUG_MODE=ON .."   #则为源文件设置_DEBUG宏   IF(DEBUG_MODE)     ADD_DEFINITIONS(-D_DEBUG)   ENDIF()      #用于指定从一组源文件 source1 source2 … sourceN(在变量APP_SRCS中定义)    #编译出一个可执行文件且命名为TestHttpClient   ADD_EXECUTABLE(TestHttpClient ${APP_SRC})      #添加编译可执行程序所需要的链接库、如果有多个中间用空格隔开   #第一个参数是可执行程序名称,第二个开始是依赖库   #在这里根据名字XXX去寻找libXXX.a文件   TARGET_LINK_LIBRARIES(TestHttpClient HttpClient) 
    转载请注明原文地址: https://ju.6miu.com/read-964705.html

    最新回复(0)