use*_*710 5 c++ cmake freetype dynamic-linking
freetype 2
在使用库cmake
构建C++ 11项目时,我在linux下使用链接时遇到了麻烦extern C
.
使用cmake和freetype 2我基本上有2个选项:
freetype-config
像freetype-config --libs
FindFreetype
cmake模块现在我正在尝试实现第二个选项,我不是很熟练,cmake
也不了解它的逻辑.
我的问题是链接阶段,我不知道如何正确地做到这一点加上这个模块并不完整,其结果freetype-config --libs
实际上包括我需要的所有库和标志,而不仅仅是文件的路径; 所以我假设我要为做同样的zlib
和libpng
.
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")
Run Code Online (Sandbox Code Playgroud)
./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";
}
}
Run Code Online (Sandbox Code Playgroud)
Pat*_* B. 10
要加载模块,FindFreetype.cmake
您需要在cmake中使用find_package
-command.第一个参数是包名称.其相应文件名的"查找"由cmake自动添加.
虽然include
可以与find_package
你合作,但可以添加一些标志.例如,如下所示,REQUIRED
在未找到freetype时使cmake失败.
另外,应该使用命令完成与cmake的链接target_link_libraries
.
这就是我写你CMakeLists.txt的方式:
cmake_minimum_required (VERSION 2.6)
project (FreetypeTutorials1)
find_package(Freetype REQUIRED)
include_directories(${FREETYPE_INCLUDE_DIRS})
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})
Run Code Online (Sandbox Code Playgroud)
target_link_libraries
是独立于平台,而'-lfreetype
中CMAKE_EXE_LINKER_FLAGS
是没有的.
CMakeLists.txt可以在其他freetype可用的平台上运行.
归档时间: |
|
查看次数: |
9833 次 |
最近记录: |