【问题标题】:Sqlite3 build through a vala cmake systemSqlite3 通过 vala cmake 系统构建
【发布时间】:2016-11-26 03:37:16
【问题描述】:

我一直在尝试通过 cmake 构建系统编译 vala 应用程序,但是在尝试链接 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 编译时无法正常工作呢?

非常感谢任何帮助。谢谢!

【问题讨论】:

    标签: c sqlite cmake vala


    【解决方案1】:

    您需要将pkg-config --libs sqlite3 的结果添加到您的LDFLAGS 或其他内容中。虽然我不使用 CMake,但我认为这是您的模板的问题。我在使用 Autotools 时遇到了同样的问题。

    【讨论】:

    • @captain 如果这个答案足够,你可能想接受它。
    【解决方案2】:

    我需要查看您的 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-01
      • 2020-07-03
      • 2015-09-05
      • 1970-01-01
      • 2012-08-05
      相关资源
      最近更新 更多