如何使用 CMake 构建和使用外部库
How to build and use an external library with CMake
我正在尝试使用跨平台库 portaudio 构建便携式声音合成器。该库有自己的 CMake 文件来构建。我想我已经设法将它构建为我项目的一部分(构建以退出代码 0 结束),但我不知道如何实际使用它的导入。我尝试在 cannot open source file
.
中使用的任何 #include 结果
这是我项目的 CMake 文件:
cmake_minimum_required(VERSION 3.0.0)
project(sound-synth VERSION 0.1.0)
include(CTest)
enable_testing()
include(ExternalProject)
# first try
# ExternalProject_Add(portaudio
# GIT_REPOSITORY https://github.com/PortAudio/portaudio.git
# )
# second try after using git submodule add https://github.com/PortAudio/portaudio.git external/portaudio
add_subdirectory(external/portaudio EXCLUDE_FROM_ALL)
file(GLOB_RECURSE SRC_FILES src/*.cpp)
add_executable(sound-synth main.cpp ${SRC_FILES})
target_include_directories(sound-synth PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)
And this is how it looks trying to include header files from the library
我正在使用 VSC 的 CMakeTools 和 MSVC 编译器。
我还必须 link 带有库的可执行文件
target_link_libraries(sound-synth PortAudio)
。
然后在 windows 我遇到了一个问题,即 .dll 被放置在与 .exe 不同的文件夹中。所以我只是添加了一个复制文件命令并修复了它。
我正在尝试使用跨平台库 portaudio 构建便携式声音合成器。该库有自己的 CMake 文件来构建。我想我已经设法将它构建为我项目的一部分(构建以退出代码 0 结束),但我不知道如何实际使用它的导入。我尝试在 cannot open source file
.
这是我项目的 CMake 文件:
cmake_minimum_required(VERSION 3.0.0)
project(sound-synth VERSION 0.1.0)
include(CTest)
enable_testing()
include(ExternalProject)
# first try
# ExternalProject_Add(portaudio
# GIT_REPOSITORY https://github.com/PortAudio/portaudio.git
# )
# second try after using git submodule add https://github.com/PortAudio/portaudio.git external/portaudio
add_subdirectory(external/portaudio EXCLUDE_FROM_ALL)
file(GLOB_RECURSE SRC_FILES src/*.cpp)
add_executable(sound-synth main.cpp ${SRC_FILES})
target_include_directories(sound-synth PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)
And this is how it looks trying to include header files from the library
我正在使用 VSC 的 CMakeTools 和 MSVC 编译器。
我还必须 link 带有库的可执行文件
target_link_libraries(sound-synth PortAudio)
。
然后在 windows 我遇到了一个问题,即 .dll 被放置在与 .exe 不同的文件夹中。所以我只是添加了一个复制文件命令并修复了它。