将库添加到项目
除了 Qt 库之外,您还可以将其他库添加到您的项目中。该过程取决于图书馆的类型和位置。您可以添加系统库、您自己的库或第三方库。该库可以位于当前项目的构建树中,也可以位于另一个构建树中。
将库添加到项目
除了 Qt 库之外,您还可以将其他库添加到您的项目中。该过程取决于图书馆的类型和位置。您可以添加系统库、您自己的库或第三方库。该库可以位于当前项目的构建树中,也可以位于另一个构建树中。
因为系统库通常不会更改并且通常默认找到,所以在添加库时不需要指定库路径或包含库的路径。您可以pkg-config
在编译期间用于查询系统库。
对于您自己的库和第三方库,您需要指定路径。Qt Creator 尝试猜测外部库的包含路径,但您需要检查它并在必要时修改它。Qt Creator 自动添加内部库的包含路径。
对于所有库,选择应用程序、库或插件的目标平台。
指定库是静态链接还是动态链接。对于静态链接的内部库,Qt Creator在项目文件中添加依赖项(使用 CMake 时为 target_link_libraries 或使用qmake 时为PRE_TARGETDEPS )。
根据开发平台的不同,Qt Creator 可能会自动检测某些选项。例如,在 macOS 上,它会自动检测库类型(Library或Framework)并隐藏该选项。但是,如果您在 macOS 以外的其他平台上开发并希望为 macOS 构建项目,则必须指定库类型。
Windows 上的默认约定是库的调试版本和发布版本具有相同的名称,但放在不同的子目录中,通常称为debug和release。如果库路径不包含这些文件夹中的任何一个,则无法选择将库放在单独文件夹中的选项。
或者,可以将字母d添加到调试版本的库名称中。例如,如果发布版本称为 example.lib,则调试版本称为 example.lib。您可以指定为调试版本添加该字母,为发布版本删除该字母。如果库名称以d结尾,请取消选择Remove "d" suffix for release version选项。
一旦您的项目成功构建并链接到它们,Qt Creator 就支持添加库的代码完成和语法突出显示。
添加库
- 在Projects视图中,右键单击项目名称以打开上下文菜单并选择Add Library。
- 按照向导的说明进行操作。
有关项目文件设置的更多信息,请参阅声明其他库。
添加内部库的示例
将内部库添加到您的项目:
- 选择文件>新建项目>库> C++ 库。
- 选择“选择”以打开“项目位置”对话框。
- 在名称字段中,为库命名。例如,mylib。
- 按照向导的说明进行操作,直到进入“项目管理”对话框。在作为子项目添加到项目列表中,选择一个项目。例如,我的应用程序。
- 在Projects视图中,右键单击项目名称以打开上下文菜单并选择Add Library > Internal Library > Next。
- 在Library字段中,选择mylib,然后选择Next。
- 选择完成将库声明添加到项目文件中。
使用 CMake 时,将target_link_libraries
命令添加到 CMakeLists.txt 文件中:
target_link_libraries(myapp PRIVATE mylib)
使用 qmake 时,在 .pro 文件中添加以下库声明:
win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../../../projects/mylib/release/ -lmylib
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../../../projects/mylib/debug/ -lmylib
else:unix: LIBS += -L$$OUT_PWD/../../../projects/mylib/ -lmylib
INCLUDEPATH += $$PWD/../../../projects/mylib
DEPENDPATH += $$PWD/../../../projects/mylib
win32:CONFIG(release, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../../../projects/mylib/release/mylib.lib
else:win32:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$OUT_PWD/../../../projects/mylib/debug/mylib.lib
else:unix: PRE_TARGETDEPS += $$OUT_PWD/../../../projects/mylib/libmylib.a
声明,仅仅翻译,版权归QT官方。