CMAKER

来源:互联网 发布:对戒 知乎 编辑:程序博客网 时间:2024/05/22 08:08

CMAKE 的一些命令

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

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

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

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

Solution目录

[html] view plain copy 在CODE上查看代码片派生到我的代码片
  1. PROJECT(TestHttpClient)  
  2.   
  3. CMAKE_MINIMUM_REQUIRED(VERSION 2.8)  
  4.   
  5. #要显示执行构建过程中详细的信息(比如为了得到更详细的出错信息)  
  6. SET( CMAKE_VERBOSE_MAKEFILE ON  
  7.   
  8. #添加子目录  
  9. ADD_SUBDIRECTORY(HttpClient)  
  10. ADD_SUBDIRECTORY(TestHttpClient)  

HttpClient目录

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

TestHttpClient目录

[html] view plain copy 在CODE上查看代码片派生到我的代码片
  1. #把编译出来的可执行文件输出到项目的bin目录下  
  2. #例如运行“cmake ..”的目录为build,则在build/bin目录下生成  
  3. SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)  
  4.   
  5. #CMake运行时,打印路径  
  6. MESSAGE(${PROJECT_SOURCE_DIR}/HttpClient)  
  7.   
  8. #添加库文件搜索路径  
  9. LINK_DIRECTORIES(${PROJECT_BINARY_DIR}/lib)  
  10.   
  11. #用于将当前目录下的所有源文件的名字保存在变量 APP_SRCS 中  
  12. AUX_SOURCE_DIRECTORY(. APP_SRC)  
  13.   
  14. #如果调用"CMake -D DEBUG_MODE=ON .."  
  15. #则为源文件设置_DEBUG宏  
  16. IF(DEBUG_MODE)  
  17.   ADD_DEFINITIONS(-D_DEBUG)  
  18. ENDIF()  
  19.   
  20. #用于指定从一组源文件 source1 source2 … sourceN(在变量APP_SRCS中定义)   
  21. #编译出一个可执行文件且命名为TestHttpClient  
  22. ADD_EXECUTABLE(TestHttpClient ${APP_SRC})  
  23.   
  24. #添加编译可执行程序所需要的链接库、如果有多个中间用空格隔开  
  25. #第一个参数是可执行程序名称,第二个开始是依赖库  
  26. #在这里根据名字XXX去寻找libXXX.a文件  
  27. TARGET_LINK_LIBRARIES(TestHttpClient HttpClient) 
0 0
原创粉丝点击