Я скачал последнюю версию Cocos2dx (v3.4). Ранее я написал оболочку для Sqlite, и я хочу использовать это в моем новом проекте. Но когда я добавляю файлы, которые находятся в другом каталоге, чем каталог проекта, я не могу включить sqlite3.h в файл EasySqlite.h. Компилятор дает C:\Users\**\Desktop\**Project\Utilities\Backend\EasySqlite.h:3: error: C1083: Cannot open include file: 'sqlite3.h': No such file or directory
Вот часть моего файла CMakeLists.txt:
set(UTILITIES_SRC
../../Utilities/Backend/CommonVariables.cpp
../../Utilities/Backend/EasySqlite.cpp
../../Utilities/Backend/GameRecordManager.cpp
../../Utilities/Backend/ResourcesDatabaseManager.cpp
../../Utilities/Backend/Statistics.cpp
../../Utilities/Backend/StudentManager.cpp
../../Utilities/Backend/Toolbox.cpp
)
set(UTILITIES_HEADERS
../../Utilities/Backend/CommonVariables.h
../../Utilities/Backend/EasySqlite.h
../../Utilities/Backend/GameRecordManager.h
../../Utilities/Backend/ResourcesDatabaseManager.h
../../Utilities/Backend/Statistics.h
../../Utilities/Backend/StudentManager.h
../../Utilities/Backend/Toolbox.h
)
set(GAME_SRC
Classes/AppDelegate.cpp
Classes/TitleScreen.cpp
Classes/SplashScreen.cpp
Classes/Cocos2dxUtils.cpp
${PLATFORM_SPECIFIC_SRC}
${UTILITIES_SRC}
)
set(GAME_HEADERS
Classes/AppDelegate.h
Classes/TitleScreen.h
Classes/SplashScreen.h
Classes/Cocos2dxUtils.h
${PLATFORM_SPECIFIC_HEADERS}
${UTILITIES_HEADERS}
)
if(GAME_HEADERS)
add_executable(${APP_NAME} ${GAME_SRC} ${GAME_HEADERS})
else()
add_executable(${APP_NAME} ${GAME_SRC})
endif()
Когда я даю полный путь к файлу sqlite3.h, как #include "C:\Users\..\..\sqlite3.h"
Я получаю ошибки компоновщика.
EasySqlite.cpp.obj:-1: error: LNK2019: unresolved external symbol _sqlite3_close referenced in function "public: struct std::pair<struct sqlite3 *,int> __thiscall EasySqlite::openDatabase(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,bool)" (?openDatabase@EasySqlite@@QAE?AU?$pair@PAUsqlite3@@H@std@@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@3@_N@Z)
Когда я перемещаю вышеупомянутые файлы и перемещаю их в каталог Classes в проекте cocos2dx, хотя я могу включить файл sqlite3.h, скажем, в файл AppDelegate.h, я все равно не могу включить его в EasySqlite.h
Разве sqlite не должен быть уже связан с Cocos2dx?
Спасибо @ chale-cs, но я нашел решение. Я не пробовал это с библиотекой sqlite, которая поставляется с Cococs2dx v3.4, я скачал sqlite3 с официального сайта. Я скомпилировал и создал файл .lib, а затем добавил подкаталог в PROJECT/CMakeLists.txt
и я связал файл .lib с проектом.
ПРОЕКТ / CMakeLists.txt:
add_subdirectory(../../Utilities/sqlite3_custom ${APP_NAME})
target_link_libraries(${APP_NAME} cocos2d sqlite3_custom)
sqlite3_custom / CMakeLists.txt:
set(SQLITE_CUSTOM_SRC
shell.c
sqlite3.c
)
add_library(sqlite3_custom STATIC
${SQLITE_CUSTOM_SRC}
)
set_target_properties(sqlite3_custom
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")