假设有一个项目依赖于两个库:LibA和LibB。这两个库的头文件和库文件分别存储在"/path/to/libA/include"、“/path/to/libA/lib”、“/path/to/libB/include"和”/path/to/libB/lib"这四个文件夹中。现在需要在CMakeLists.txt文件中设置CMAKE_PREFIX_PATH,以便CMake能够找到这些库。
首先,在项目的根目录下创建一个名为CMakeLists.txt的文件,并编写如下内容:
cmake_minimum_required(VERSION 3.0)
project(example_project)
set(CMAKE_PREFIX_PATH /path/to/libA;/path/to/libB)
find_package(LibA REQUIRED)
find_package(LibB REQUIRED)
add_executable(example_project main.cpp)
target_include_directories(example_project PRIVATE ${LibA_INCLUDE_DIRS} ${LibB_INCLUDE_DIRS})
target_link_libraries(example_project ${LibA_LIBRARIES} ${LibB_LIBRARIES})
上面的CMakeLists.txt文件中,首先使用set命令设置了CMAKE_PREFIX_PATH的值,然后使用find_package命令寻找依赖的两个库。最后,为目标可执行文件example_project添加了库文件路径和库文件。
五、CMAKE_PREFIX_PATH与其他查找路径的关系
1、除了CMAKE_PREFIX_PATH外,CMake还有其他几个相关的变量,如CMAKE_INCLUDE_PATH、CMAKE_LIBRARY_PATH等。这些变量可以理解为CMAKE_PREFIX_PATH的子集。例如,当设置了CMAKE_INCLUDE_PATH后,CMake会在指定路径下搜索头文件。同样,设置CMAKE_LIBRARY_PATH后,CMake会在指定路径下搜索库文件。
2、在实际应用中,如果确定项目只需要查找头文件或库文件,可以使用CMAKE_INCLUDE_PATH或CMAKE_LIBRARY_PATH。这样做的好处是提高了查找效率,降低了构建时间。但是,如果项目需要同时查找头文件和库文件,推荐使用CMAKE_PREFIX_PATH。
3、需要注意的是,设置了CMAKE_PREFIX_PATH时,CMake会优先在CMAKE_PREFIX_PATH指定的路径下查找。如果没有找到,CMake会进一步在默认查找路径、CMAKE_INCLUDE_PATH或CMAKE_LIBRARY_PATH指定的路径下进行查找。因此,在设置CMAKE_PREFIX_PATH时,需要确保其值的正确性,以避免出现查找失败的情况。
https://www.python100.com/html/Y549F47DXKT9.html
是一个关键变量,用于指定项目的安装根目录。通过正确设置这个变量,可以灵活地控制项目的安装位置,满足不同的部署需求。无论是全局安装、用户本地安装,还是特定目录安装,都能提供强大的支持。在开发空间: 在构建过程中,Catkin 默认将可执行文件放置在devel目录中,以便可以立即运行和测试这些文件,而无需执行安装步骤。目录结构是 Catkin 默认的可执行文件输出路径。如果需要将可执行文件安装到其他位置,请使用或,并确保在的中正确配置了install命令。
CMake命令:find_package、make instal、make --build .、CMAKE_PREFIX_PATH、add_compile_options、set_property用法介绍
假设我需要使用第三方库去做一些事情,如何在配置中体现这种依赖关系?ind_package旨在使用预先设置的配置文件来查找依赖项,
主要用的参数如下:
PACKAGE_NAME_CASE_SENSITIVEversionEXACTQUIETCONFIG
对于上述前两个变量/列表而言,cmake会在每一条的以下扩展路径中查找配置文件:
.. 表示上层目录
-D 相当于就是定义, -D 可以理解为告诉cmake 后边我要定义一些参数了, 你每定义一个就在前边加上-D就是了
CMAKE_PREFIX_PATH是要编译的WENJIADE路径
CMAKE_BUILD_TYPE 是要编译的类型, 一般的选...
这些变量通常在CMake项目的配置文件(例如CMakeLists.txt文件)中设置。通过正确配置这些变量,你可以定制CMake项目的构建和安装行为,以适应项目的需求和环境。
cmake_minimum_required(VERSION 2.8.2 FATAL_ERROR)project("ProjName")// 不推荐使用add_definitions来设置编译选项,因为其作用如同cmake -D
add_definitions(
-std=c++11 # Or -std=c++0x
-Wall
-Wfatal-errors
-DXXX
两个cmake参数很像,查看了官方文档
CMAKE_PREFIX_PATH是以分号分隔的列表,供find_package(), find_program(), find_library(), find_file()和find_path()使用,初始为空,由用户设定
CMAKE_PREFIX_PATH 官方链接
CMAKE_MODULE_PATH是以分号分隔的列表,供include()或 find_...