我想用Qake和LuaJIT將在Visual Studio 2012上運行CMake。我管理某種方式來運行Qt,但我不知道如何將LuaJIT庫添加到項目。我使用從http://luajit.org/git/luajit-2.0.git克隆的LuaJIT的源代碼,它是通過運行.bat文件構建的。用CMake添加庫Qt和LuaJIT/Lua51
我不在乎LuaJIT將由CMake構建,我只需要鏈接庫並將頭添加到項目。
我刪除lib文件夾從我的項目...是不值得的麻煩有加上項目whitout cmake的文件依賴關係:d
我的項目層次:
+lib
-luajit-2.0
+src
-my sources
+ui
-ui files
-CMakeLists.txt
和的CMakeLists.txt文件看起來是這樣的:
cmake_minimum_required(VERSION 2.8.12)
set(PROJECT "Grapedit")
project(${PROJECT})
# Qt Stuff
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
find_package(Qt5Widgets REQUIRED)
set(SOURCE_FILES
src/main.cpp
src/mainwindow.h
src/mainwindow.cpp
)
set(UI_FILES
ui/mainwindow.ui
)
source_group("UI Files" FILES ${UI_FILES})
qt5_wrap_ui(UI_HEADERS ${UI_FILES})
source_group("Generated UI Headers" FILES ${UI_HEADERS})
add_executable(${PROJECT} ${SOURCE_FILES} ${UI_HEADERS} ${UI_FILES})
qt5_use_modules(${PROJECT} Widgets)
我的解決方案
所以它是最後的工作和我做了幾個新手的錯誤... :) 我將它們寫下來給別人:
- 不知道什麼是找到模塊...這將搜索環境,設置圖書館的位置或標記它沒有找到它們。由於LuaJIT與Lua51兼容,因此您可以使用
find_package(Lua51)
。 - 您的圖書館必須以某種方式可見CMake。在Windows上最簡單的方法是將它們添加到PATH變量。或者,您可以將庫的路徑添加到CMake變量
CMAKE_PREFIX_PATH
。打開查找模塊,例如FindLua51.cmake
,您將看到您的圖書館必須如何組織。在Windows上,我必須安裝LuaJIT manualy - 創建LuaJIT文件夾,我已經把* .h文件包含子文件夾,* .dll到bin子文件夾,* .lib到lib子文件夾。然後將bin文件夾添加到PATH並將LUA_DIR設置爲LuaJIT文件夾。 - 上使用
include_directories
包括文件夾 - ,則必須鏈接庫
target_link_libraries
,但add_executable
後!
我的CMakeLists.txt文件:
cmake_minimum_required(VERSION 2.8.12)
# Declare project variables...
set (PROJECT "Grapedit")
set (
SOURCE_FILES
src/main.cpp
src/mainwindow.h
src/mainwindow.cpp
)
set(UI_FILES
ui/mainwindow.ui
)
# Set project name
project(${PROJECT})
# Include Lua directories
include_directories(${LUA_INCLUDE_DIR})
# Qt Stuff
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
# Find packages...
# Will find also LuaJIT, but must be named same as Lua51 and installed into directories
find_package(Lua51)
# Find Qt modules, every module separately
find_package(Qt5Widgets REQUIRED)
# Create nice groups in IDEs
source_group("UI Files" FILES ${UI_FILES})
source_group("Generated UI Headers" FILES ${UI_HEADERS})
# Use Qt UI files
qt5_wrap_ui(UI_HEADERS ${UI_FILES})
# Create executable
add_executable (
${PROJECT}
${SOURCE_FILES}
${UI_HEADERS}
${UI_FILES}
)
# Link libraries...
# Must be after executable is created!
# Link Qt modules
qt5_use_modules (
${PROJECT}
Widgets
)
# Link Lua
target_link_libraries(${PROJECT} ${LUA_LIBRARIES})
# Will not show new windows prompt when running program
if (MSVC)
set_target_properties(${PROJECT} PROPERTIES
WIN32_EXECUTABLE YES
LINK_FLAGS "/ENTRY:mainCRTStartup"
)
endif()
非常感謝響應! 我添加了這些行 '設置(LUA_INCLUDE_DIR 「LIB/luajit-2.0/src目錄」) include_directories($ {} LUA_INCLUDE_DIR)' 和successfuly包括luaJIT庫的頭:) 但仍然不知道如何鏈接它。所以我會用你發給我的那個鏈接來處理它... – AdUki
@AdUki:你解決了嗎? – lpapp
是的,在我的解決方案下 – AdUki