将预构建的库包含到cmake项目的最佳方法是什么?我想在我正在处理的项目中包含FreeType,文件结构如下:
- 建立
- 苹果系统
- 使/
- 的XCode /
- 视窗
- 视觉工作室/
- 资源
- 库
- 苹果系统
- libfreetype建立
- 视窗
- freetype.dll
- 包括
- freetype /(ftbuild.h自动包含的各种头文件)
- ftbuild.h(这是我理解的代码中包含的内容.)
- 我的项目
- main.cpp中
- Foo.cpp中
- foo.h中
该库已经编译完毕.MyProject是当前项目的名称.
谢谢!麦克风
Boo*_*jum 10
最近的版本已经有一个用于查找FreeType的模块.这是我过去做过的事情:
INCLUDE(FindFreetype)
IF(NOT FREETYPE_FOUND)
FIND_LIBRARY(FREETYPE_LIBRARIES NAMES libfreetype freetype.dll PATHS "./libs/MacOS" "./libs/Windows" DOC "Freetype library")
FIND_PATH(FREETYPE_INCLUDE_DIRS ftbuild.h "./includes" DOC "Freetype includes")
ENDIF(NOT FREETYPE_FOUND)
INCLUDE_DIRECTORIES(${FREETYPE_INCLUDE_DIRS})
TARGET_LINK_LIBRARIES(MyProject ${FREETYPE_LIBRARIES})
Run Code Online (Sandbox Code Playgroud)
您需要将路径更改为相对于CMakeLists.txt.
此代码段首先调用FindFreetype模块以检入标准系统位置.如果它无法在那里找到库,那么这将回到检查相对于您的CMakeLists.txt脚本的目录.如果这仍然失败,你仍然可以设置或覆盖通过通常CMake的UI的位置.无论如何,它会尝试在要链接的包含和库列表中添加一些内容.
只需使用target_link_libraries以及预构建的lib的完整路径.
所以,像:
# In the file Source/MyProject/CMakeLists.txt
add_executable(my_exe main.cpp foo.cpp foo.h)
if(WIN32)
target_link_libraries(my_exe ${CMAKE_CURRENT_SOURCE_DIR}/../libs/Windows/freetype.lib)
endif()
if(APPLE)
target_link_libraries(my_exe ${CMAKE_CURRENT_SOURCE_DIR}/../libs/MacOS/libfreetype.a)
endif()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
23482 次 |
最近记录: |