2016-09-26 20 views
1

我正在嘗試使用CMake編譯我的應用程序,並且出於各種原因需要編譯Lua。我目前的設置如下:將生成的子項目配置文件添加到CMake中的主項目中

project/ CMakeLists.txt ... libs/ CMakeLists.txt ... lua/ CMakeLists.txt ...

我使用LuaDist,因爲它已經提供了CMake的構建系統LUA。當我嘗試從我的項目中包含lua.h時會出現問題,因爲它需要luaconfig.h,它由Lua子項目生成並輸出到它的二進制目錄,而不是源目錄。

在我的主要項目中,我做這樣的事情:

include_directories(libs/lua/src/ etc...)

我怎麼能還包括在我的主要項目從子項目中生成的文件?

+0

如果您需要在外部項目上運行'configure'和'make',請檢出cmake的ExternalProject。 – Hayt

+0

我並不需要在任何導入的庫上運行,也不需要「配置」或「製作」,因爲它們都隨CMake構建配置一起提供。問題是Lua在編譯時創建了一個頭文件,並將其複製到構建目錄中,而不是添加到項目中。 –

回答

2

如果您通過add_subdirectory調用直接包含lua,則還可以使用include_directories(${lua_BINARY_DIR})(假設lua的CMakeLists.txt文件中有project(lua)命令)。如果項目命令不同,那麼變量的名稱可能是別的東西,或者您可能需要多個額外的include_directories,具體取決於您需要的頭文件的位置......但是這應該讓您開始。

+0

這工作,謝謝!儘管爲了將來的參考,你可能想編輯'$ {lua_BINARY_DIRECTORY}'到'$ {lua_BINARY_DIR}'! –

相關問題