Fou*_*ive 10 cmake clion openmesh vcpkg
我遵循了 VCPKG github 站点中描述的教程 ,然后安装了 OpenMesh 8.0,之后,我链接了工具链
-DCMAKE_TOOLCHAIN_FILE=/home/diolante/vcpkg/scripts/buildsystems/vcpkg.cmake
Run Code Online (Sandbox Code Playgroud)
在 Clion 工具链设置中,当我重新加载CMakeLists.txt
我在 Clion 项目中更改的内容时:
# CMakeLists.txt
cmake_minimum_required(VERSION 3.14)
project(lul)
find_package(openmesh REQUIRED)
add_executable(main main.cpp)
target_link_libraries(main openmesh)
Run Code Online (Sandbox Code Playgroud)
Clion 输出返回以下错误:
CMake Error at /home/diolante/vcpkg/scripts/buildsystems/vcpkg.cmake:288 (_find_package): By not providing "Findopenmesh.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "openmesh", but CMake did not find one.
Could not find a package configuration file provided by "openmesh" with any
of the following names:
openmeshConfig.cmake
openmesh-config.cmake
Add the installation prefix of "openmesh" to CMAKE_PREFIX_PATH or set
"openmesh_DIR" to a directory containing one of the above files. If
"openmesh" provides a separate development package or SDK, be sure it has
been installed.
Run Code Online (Sandbox Code Playgroud)
以下内容基于 Visual Studio 编译器,但应该很容易适用于不同的环境。
首先,您需要安装要使用的三元组,例如
vcpkg install openmesh --triplet x64-windows --triplet x86-windows
Run Code Online (Sandbox Code Playgroud)
(如果您不确定是构建项目 x64 还是 x86,只需安装两个三元组即可。)
在“构建、执行、部署”下的“工具链”条目中选择正确的工具链。要使工具链默认,请使用向上和向下小箭头将其移动到列表中的第一个条目。
在“构建、执行、部署”下的“CMake”条目中选择工具链
如果您选择的工具链/架构尚未安装 OpenMesh 三元组,您将准确地看到您遇到的错误。
vcpkg
为 8.1 提供了两个变量OpenMesh
,需要用于指定要链接的包含目录和库,如下所示:
target_include_directories(main PRIVATE ${OPENMESH_INCLUDE_DIRS})
target_link_libraries(main PRIVATE ${OPENMESH_LIBRARIES})
Run Code Online (Sandbox Code Playgroud)
现在这个项目的整体CMakeLists.txt
看起来像这样:
cmake_minimum_required(VERSION 3.14)
project(lul)
find_package(openmesh REQUIRED)
add_executable(main main.cpp)
target_include_directories(main PRIVATE ${OPENMESH_INCLUDE_DIRS})
target_link_libraries(main PRIVATE ${OPENMESH_LIBRARIES})
# the following line is only needed for Visual Studio compilers
target_compile_definitions(main PRIVATE -D_USE_MATH_DEFINES)
Run Code Online (Sandbox Code Playgroud)