用CMake創建OpenGLES的測試工程

測試工程的目錄結構如下
+CMakeLists.txt
|
+--+ src/
|  |
|  +---- XX.c
|  /---- CMakeLists.txt
+--+ libcommon/
|  |
|  +--- xxx.h
|  +--- xxx.c
|  /--- CMakeLists.txt
/-- + build

頂層CMakeLists



cmake_minimum_required(VERSION 2.8)

PROJECT(opengl-test C CXX)

add_subdirectory(src)

add_subdirectory(libcommon)
add_subdirectory告訴cmake去子目錄尋找新的CMakeLists.txt


src 的CMakeLists



include_directories(${PROJECT_SOURCE_DIR}/libcommon)
SET(SRCS

    Simple_Texture2D.c
    Hello_Triangle.c
    )


ADD_DEFINITIONS("-DDEBUG")

FOREACH(SRC ${SRCS})
    get_filename_component(TARGET_NAME ${SRC} NAME_WE)
    ADD_EXECUTABLE(${TARGET_NAME} ${SRC})
    TARGET_LINK_LIBRARIES(${TARGET_NAME}   libcommon)
ENDFOREACH(SRC)
include_directories將給定的路徑添加到編譯器搜索包含文件的路徑列表中

PROJECT_SOURCE_DIR 指的是工程頂層目錄

ADD_DEFINITIONS 供設置-D..等編譯預處理需要的宏定義參數

foreach 對一個list中的每一個變量執行一組命令。

  foreach(loop_var arg1 arg2 ...)
    COMMAND1(ARGS ...)
    COMMAND2(ARGS ...)
    ...
  endforeach(loop_var)

get_filename_component 得到一個完整文件名中的特定部分。

  get_filename_component(<VAR> FileName
                         PATH|ABSOLUTE|NAME|EXT|NAME_WE|REALPATH
                         [CACHE])

  將變量<VAR>設置爲路徑(PATH),文件名(NAME),文件擴展名(EXT),去掉擴展名的文件名(NAME_WE)
   ADD_EXECUTABLE 生成TARGET_NAME爲名稱的可執行程序
   TARGET_LINK_LIBRARIES 將libcommon 鏈接到 TARGET_NAME這個目標上



libcommon的CMakeLists



SET(LIB_SRC esUtil.c
            esShapes.c
            esTransform.c
            esShader.c)

add_library(libcommon ${LIB_SRC})

set_target_properties(libcommon PROPERTIES OUTPUT_NAME "common")

TARGET_LINK_LIBRARIES(libcommon -lGLESv2 -lEGL -lm -lX11)
本來生成的靜態庫是liblibcommoon.a 爲了生成的名稱libcommon.a


set_target_properties 修改庫的輸出名稱爲 libcommon.a

add_library 生成一個庫,類似於add_executable




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章