CMake教程9:cocos2d-x的CMake逻辑分析

简介: CMake教程9:cocos2d-x的CMake逻辑分析
  1. CMake起点:cocos2d-x/CMakeLists.txt
# 设置module的查找目录
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake/Modules/")
include(BuildModules)
# 调用过程
BuildModules()
复制代码
  1. 设置lib:cmake/Modules/BuildModules.cmake
# 设置lib变量... 
# xxhash
if(USE_PREBUILT_LIBS OR USE_SOURCES_EXTERNAL)
  add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/external/xxhash)
  # 设置_INCLUDE_DIRS、_LIBRARIES等变量
  set(XXHASH_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/external/xxhash)
  set(XXHASH_LIBRARIES xxhash)
else()
  cocos_find_package(xxhash xxhash REQUIRED)
endif()
# 开始真正的项目lib添加
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/cocos)
复制代码
  1. 将lib引入到项目中:cocos2d-x/cocos/CMakeLists.txt
# 引入lib
foreach(pkg XXHASH ... )
  cocos_use_pkg(cocos2dInternal ${pkg})
endforeach()
复制代码
  1. cocos_use_pkg的实现在cmake/Modules/CocosBuildHelper.cmake
function(cocos_use_pkg target pkg)
    set(prefix ${pkg})
    set(_include_dirs  ${${prefix}_INCLUDE_DIRS})
    # 将头文件目录加入到项目中
    include_directories( ${_include_dirs} )
    set(_library_dirs ${${prefix}_LIBRARY_DIRS})   
    # 将库文件目录加入到项目中
    link_directories(${_library_dirs})
    set(_libs ${${prefix}_LIBRARIES})
    # 链接lib
    target_link_libraries(${target} ${_libs})
    # 宏定义
    set(_defs ${${prefix}_DEFINITIONS})
    add_definitions(${_defs})
endfunction()
复制代码

与第2步设置_INCLUDE_DIRS_LIBRARIES等变量前后呼应。


目录
相关文章
|
4天前
|
缓存 C++ Windows
面向 C++ 的现代 CMake 教程(一)(2)
面向 C++ 的现代 CMake 教程(一)
43 0
|
4天前
|
C++ 开发者 Unix
面向 C++ 的现代 CMake 教程(四)(5)
面向 C++ 的现代 CMake 教程(四)
21 0
|
4天前
|
C++ 存储 测试技术
面向 C++ 的现代 CMake 教程(五)(3)
面向 C++ 的现代 CMake 教程(五)
30 0
|
4天前
|
C++ Unix Windows
面向 C++ 的现代 CMake 教程(四)(3)
面向 C++ 的现代 CMake 教程(四)
17 0
|
4天前
|
C++ 容器 Docker
面向 C++ 的现代 CMake 教程(一)(1)
面向 C++ 的现代 CMake 教程(一)
55 0
|
4天前
|
C++ 存储 JSON
面向 C++ 的现代 CMake 教程(五)(4)
面向 C++ 的现代 CMake 教程(五)
31 0
|
4天前
|
C++ 缓存 存储
面向 C++ 的现代 CMake 教程(一)(3)
面向 C++ 的现代 CMake 教程(一)
34 0
|
4天前
|
C++ 开发者 开发工具
面向 C++ 的现代 CMake 教程(四)(2)
面向 C++ 的现代 CMake 教程(四)
21 0
|
4天前
|
C++ 存储 测试技术
面向 C++ 的现代 CMake 教程(五)(2)
面向 C++ 的现代 CMake 教程(五)
30 0
|
4天前
|
缓存 存储 C++
面向 C++ 的现代 CMake 教程(一)(4)
面向 C++ 的现代 CMake 教程(一)
36 0