2016-11-26 38 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