将freetype与cmake链接

Linking freetype with cmake

本文关键字:链接 cmake freetype      更新时间:2023-10-16

在使用extern C库构建C++11项目时,在linux下使用cmake链接freetype 2时遇到问题。

对于cmake和freetype 2,我基本上有两个选项:

  • freetype-config --libs一样使用实用程序freetype-config
  • 使用FindFreetype cmake模块

现在我正在尝试实现第二个选项,但我对cmake不是很熟练,也不理解它的逻辑

我的问题是链接阶段,我不知道如何正确地做到这一点,加上这个模块不像freetype-config --libs那样完整,CCD_8真正包括了我需要的所有库和标志,而不仅仅是文件的路径;所以我假设我必须对CCD_ 9和CCD_。

CMakeLists.txt

cmake_minimum_required (VERSION 2.6)
project (FreetypeTutorials1)
include(FindFreetype)
include_directories(${FREETYPE_INCLUDE_DIRS})
SET(CMAKE_CXX_FLAGS "-O2 -std=c++11")
SET(CMAKE_EXE_LINKER_FLAGS "-v -lfreetype")
add_executable( demo "${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp")

./src/main.cpp(只是一些随机代码,所以我有一些东西要提供给编译器(

extern "C" {
#include <ft2build.h>
#include FT_FREETYPE_H
}
#include <iostream>
int main()
{
  FT_Library library;
  auto error = FT_Init_FreeType(&library);
  if (error)
  {
    std::cout << "An error !n";
  }
}

要加载类似FindFreetype.cmake的模块,需要在cmake中使用find_package-命令。第一个参数是包名称。cmake会自动添加相应文件名的"Find"。

虽然include可能与find_package配合使用,但您可以添加一些标志。例如,如下所示,REQUIRED,在找不到freetype时使cmake失败。

此外,应使用命令target_link_libraries来完成与cmake的链接。

这就是我给你写CMakeLists.txt的方式:

cmake_minimum_required (VERSION 2.6)
project (FreetypeTutorials1)
find_package(Freetype REQUIRED)
SET(CMAKE_CXX_FLAGS "-O2 -std=c++11")
SET(CMAKE_EXE_LINKER_FLAGS "-v")
add_executable( demo src/main.cpp) # CMAKE_CURRENT_SOURCE_DIR is implicit here
target_link_libraries(demo ${FREETYPE_LIBRARIES})
target_include_directories(demo PRIVATE ${FREETYPE_INCLUDE_DIRS})

CCD_ 19是独立于平台的,而CCD_。

CMakeLists.txt将在其他可用freetype的平台上运行。

(编辑2019:使用target_include_directories()而不是include_directories()