13

luaを外部プロジェクトとしてビルドしていて、バンドルされているMakefileの代わりに独自のCMakeLists.txtを使用したいと思います。これは私のメインのCMakeLists.txtにあるものです:

include(ExternalProject)
set(lua_RELEASE 5.1.4)
ExternalProject_Add(
    lua-${lua_RELEASE}
    URL http://www.lua.org/ftp/lua-${lua_RELEASE}.tar.gz
    DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR}/download/lua-${lua_RELEASE}
    SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/lua/lua-${lua_RELEASE}
    BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/build/lua-${lua_RELEASE}
    UPDATE_COMMAND ""
    PATCH_COMMAND ""
    INSTALL_COMMAND ""
)

BUILDステップが機能するには、SOURCE_DIRにCMakeLists.txtが含まれている必要があります。現在、SOURCE_DIRにこのCMakeLists.txtがあります。

cmake_minimum_required(VERSION 2.8)

project(lua)

set(lua_library
  lapi.c lcode.c ldebug.c ldo.c ldump.c lfunc.c lgc.c llex.c
  lmem.c lobject.c lopcodes.c lparser.c lstate.c lstring.c
  ltable.c ltm.c lundump.c lvm.c lzio.c
  lauxlib.c lbaselib.c ldblib.c liolib.c lmathlib.c loslib.c
  ltablib.c lstrlib.c loadlib.c linit.c
)

foreach(s ${lua_library})
    set(lua_LIBRARY ${lua_LIBRARY} src/${s})
endforeach()

add_definitions(-DLUA_ANSI=1)
add_library(lua STATIC ${lua_LIBRARY})

これは機能しますが、luaソースファイルがバージョン管理されたCMakeLists.txtを乱雑にすることに満足していません。

SOURCE_DIRにないビルドステップにカスタムCMakeLists.txtを指定する方法はありますか?

4

1 に答える 1

17

私はそれを自分で理解しました。私は今これをPATCH_COMMAND:として使用しています

    PATCH_COMMAND ${CMAKE_COMMAND} -E copy
      "${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/lua/CMakeLists.txt" <SOURCE_DIR>/CMakeLists.txt

これにより、カスタムCMakeLists.txtを含めることができthirdparty/lua、アップストリームパッケージがにダウンロードされthirdparty/lua/lua-${lua_RELEASE}ます。完全!

于 2011-09-25T21:27:59.197 に答える