CMake add library libpq (postgreSQL) mac c++ clion
CMake add library libpq (postgreSQL) mac c++ clion
我很惊讶没有官方的 c++ 库可以让 postgres 赶上标准。所以我必须使用原来的c lipq。但是如何告诉链接器将其包含在 CMake 中?我希望它在CMake中是一条短线。
我所看到的只是find_package(甚至软件包是什么?,在快速 JetBrains 的 CMake 教程中提到,但在官方中没有提到),target_link_libraries,find_library。
我所要求的只是像在 Python(跨平台)pip install my_library
然后import my_library
.我该怎么做?
在 CMake 中,包是一个外部库(或工具),可以使用脚本(与 CMake 捆绑在一起,或由其他人编写)进行定位。
find_package
命令运行该脚本。找到包时,脚本会设置许多指向包含目录、要链接的库等的变量。
CMake 中包含 Postgres 的脚本,因此应该可以执行以下操作:
# This command attempts to find the library, REQUIRED argument is optional
find_package(PostgreSQL REQUIRED)
# Add include directories to your target. PRIVATE is useful with multi-target projects - see documentation of target_include_directories for more info
target_include_directories(MyTarget PRIVATE ${PostgreSQL_INCLUDE_DIRS})
# Add libraries to link your target againts. Again, PRIVATE is important for multi-target projects
target_link_libraries(MyTarget PRIVATE ${PostgreSQL_LIBRARIES})
这是如何使用find_package
的简单示例。带有前缀PostgreSQL_
变量由find_package
命令运行的脚本设置,如下所述:FindPostgreSQL 文档
作为旁注,find_library
也可以使用,尽管它是"较低级别"。该命令搜索静态/共享库,并用于实现find_package
使用的脚本。只要您尝试使用的库具有find_package
脚本,就没有必要使用find_library
。
更新(CMake 3.14 及更高版本)
从CMake 3.14开始,可以使用所谓的"导入目标"来表示Postgres,这更简单一些,并且符合现代CMake:
find_package(PostgreSQL REQUIRED)
# This line adds both include paths and libraries for Postgres
target_link_libraries(MyTarget PRIVATE PostgreSQL::PostgreSQL)
PostgreSQL::PostgreSQL
导入由Find
模块创建的目标。此目标已将包含目录和库设置为其INTERFACE
属性。这意味着在上面的例子中,MyTarget
将从PostgreSQL::PostgreSQL
"继承"包含目录和库,而不必显式设置它们。
- 在没有Xcode的情况下在Mac捆绑包中嵌入框架
- c++17文件系统::recursive_directory迭代器()在mac上没有给出这样的目录,但在windows上
- 如何使用CLion在Mac上创建一个新的.txt文件
- 如何使用Clang/GCC在Mac上为C/C++设置VSCode
- 在 Mac 上使用 CMAKE 将 FFTW 和 FFTWPP 链接到项目中时未定义的符号
- 有人安装"IITB Simplecpp in mac"吗?
- libprotobuf 检查在 Mac OS 上执行程序时失败
- 如何在 Mac 上使用 c++17 并行标准库算法?
- 在 Mac 上的 python 上提升
- 我可以在 iOS 或 mac 应用程序中使用C++代码吗?
- 如何在 Mac 上正确编译C++,当它在 Linux 上编译没有问题时?
- C++读取用户输入而不按回车键(Mac OS X),与Turbo Pascal中的读取键相同
- 如何在 MAC OS c/c++ 中阻止 USB 存储设备
- 编译在我的 Mac 上工作,但在集群 (Linux) 上不起作用
- 在装有 CLion 的 Mac 上使用 C++ 连接到 MySQL 数据库时出现问题
- 动态获取 esp32 的 mac 地址并在以太网库中使用它.
- GDB 断点在 Mac 上是不准确的
- 各种版本的 Mac OSX 向后兼容性如何?(Xcode C++
- 无法识别 Mac c++ 文件系统库
- 为什么 SDL 在 Mac 上比 Linux 慢得多?