CMake添加库libpq(postgreSQL)mac c ++ clion

Ada*_*dam 2 c++ postgresql cmake clion

令我感到惊讶的是,没有正式的c ++库用于追赶标准的postgres.所以我必须使用原来的c lipq.但是如何告诉链接器将其包含在CMake中?我希望它在CMake中只是一条短线.

我所看到的只是find_package(甚至包装是什么?,在快速JetBrains的CMake教程中提到,但在官方中没有提到),target_link_libraries,find_library.

我所要求的就像在Python(跨平台)中pip install my_library那样import my_library.

我该怎么做?

joe*_*hip 6

在CMake中,包是一个外部库(或工具),可以使用脚本(与CMake捆绑在一起,或由其他人编写)来定位.

find_package命令运行该脚本.找到包时,脚本会设置一些指向包含目录,要链接的库等的变量.

Postgres的脚本包含在CMake中,所以应该可以这样做:

# 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})
Run Code Online (Sandbox Code Playgroud)

这是一个如何find_package使用的简单示例.带PostgreSQL_前缀的变量由运行find_package命令的脚本设置,并在此处描述:FindPostgreSQL文档

作为旁注,find_library也可以使用,虽然它是"较低级别".该命令搜索静态/共享库,并用于实现使用的脚本find_package.只要您尝试使用的库具有find_package脚本,就不必使用它find_library.