2016-09-26 76 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}'! –

相关问题