2016-11-26 40 views
1

我一直在試圖通過cmake構建系統來編譯vala應用程序,但在嘗試鏈接sqlite3包時遇到了問題。運行時讓我得到通過vala cmake系統構建Sqlite3

CMakeFiles/app.dir/Database/Database.c.o: In function `template_database_construct_from_file': 
Database.c:(.text+0x8a): undefined reference to `sqlite3_open' 
Database.c:(.text+0xaa): undefined reference to `sqlite3_close' 
Database.c:(.text+0x116): undefined reference to `sqlite3_errcode' 
Database.c:(.text+0x131): undefined reference to `sqlite3_errmsg' 

以及一堆幾乎相同的錯誤。我可以通過使用--pkg sqlite3通過命令行編譯來測試代碼,並且編譯時沒有任何問題。那麼爲什麼在從cmake編譯時不能正常工作呢?

任何幫助,非常感謝。謝謝!

回答

1

您需要將pkg-config --libs sqlite3的結果添加到LDFLAGS或其他東西。雖然我不使用CMake,但我認爲這是您模板的問題。我使用Autotools遇到了同樣的問題。

+0

@captain 如果此答案足夠,您可能想要接受它。 –

1

我需要查看您的CMakeLists.txt以更好地理解您的問題。

不過,到庫鏈接到CMake的VALA構建,這樣做:

find_package(PkgConfig) 
pkg_check_modules(SQLITE3 REQUIRED sqlite3) 
set(CFLAGS 
    ${SQLITE3_CFLAGS} ${SQLITE3_CFLAGS_OTHER} 
    ...) 
add_definitions(${CFLAGS}) 

set(LIBS 
    ${SQLITE3_LIBRARIES} 
    ...)  
link_libraries(${LIBS}) 

set(LIB_PATHS 
    ${SQLITE3_LIBRARY_DIRS} 
    ...) 
link_directories(${LIB_PATHS}) 

( 「...」 代表你的依賴性的其餘部分)

更完整的例子是在這裏:https://github.com/felipe-lavratti/vala-cmake-example