如何设置CMakeLists.txt以正确导入AntTweakBar库?

时间:2019-05-25 05:53:17

标签: c++ opengl cmake

我正在修改C ++应用程序以演示基于OpenGL,GLFW和GLAD库的环境光遮挡。我也想使用AntTweakBar库,但是我不知道如何修改cMakeLists.txt以正确导入它。我尝试了很多不同的版本来导入该库,该库仍然位于项目的根目录中。

在下面您可以看到我的cmakelists.txt。

cmake_minimum_required(VERSION 2.8)
cmake_policy(VERSION 2.8)

project(LearnOpenGL)

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules/")
link_directories(${CMAKE_SOURCE_DIR}/lib)
list(APPEND CMAKE_CXX_FLAGS "-std=c++11")

# find the required packages
find_package(GLM REQUIRED)
message(STATUS "GLM included at ${GLM_INCLUDE_DIR}")
find_package(GLFW3 REQUIRED)
message(STATUS "Found GLFW3 in ${GLFW3_INCLUDE_DIR}")
find_package(ASSIMP REQUIRED)
message(STATUS "Found ASSIMP in ${ASSIMP_INCLUDE_DIR}")

set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall")
find_package(OpenGL REQUIRED)
add_definitions(${OPENGL_DEFINITIONS})
find_package(X11 REQUIRED)
# note that the order is important for setting the libs
# use pkg-config --libs $(pkg-config --print-requires --print-requires-private glfw3) in a terminal to confirm
set(LIBS ${GLFW3_LIBRARY} X11 Xrandr Xinerama Xi Xxf86vm Xcursor GL dl pthread ${ASSIMP_LIBRARY})
set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} -ldl")

configure_file(configuration/root_directory.h.in configuration/root_directory.h)
include_directories(${CMAKE_BINARY_DIR}/configuration)

# first create relevant static libraries requried for other projects

add_library(GLAD "src/glad.c")
set(LIBS ${LIBS} GLAD)


FIND_PATH(ANT_TWEAK_BAR_INCLUDE_PATH AntTweakBar.h
        PATHS
        ${CMAKE_BINARY_DIR}/AntTweakBar/include)

FIND_LIBRARY( ANT_TWEAK_BAR_LIBRARY AntTweakBar
        PATHS
        ${CMAKE_BINARY_DIR}/AntTweakBar/lib
        )

#reate a project file
file(GLOB SOURCE
        "src/*.h"
        "src/*.cpp"
        "src/*.vs"
        "src/*.fs"
        "src/*.gs"
        )

set(NAME "SSAO")
add_executable(${NAME} ${SOURCE})
target_link_libraries(${NAME} ${LIBS} ${ANT_TWEAK_BAR_LIBRARY})

set_target_properties(${NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin/")
include_directories(${CMAKE_SOURCE_DIR}/includes)
include_directories(${ANT_TWEAK_BAR_INCLUDE_PATH})

1 个答案:

答案 0 :(得分:0)

这是一个示例,我介绍了如何使用cmake作为构建配置生成器将静态googletest库'libgtest.a'和'libgmock.a'导入到项目中。 对于共享库,您需要在add_library中将STATIC替换为SHARED。

cmake_minimum_required(VERSION 2.8)
project(gtest_sample1)

include_directories(../googletest/include)
include_directories(../googlemock/include)

add_library(gtest STATIC IMPORTED)
set_property(TARGET gtest PROPERTY IMPORTED_LOCATION /home/mschmid/projects/googletest-master/gtest/libgtest.a)
add_library(gmock STATIC IMPORTED)
set_property(TARGET gmock PROPERTY IMPORTED_LOCATION /home/mschmid/projects/googletest-master/gmock/libgmock.a)

add_executable(gtest_sample1 main.cpp)
target_link_libraries(gtest_sample1 gtest gmock pthread)