46 lines
1.9 KiB
CMake
46 lines
1.9 KiB
CMake
# Copyright 2023 Google LLC. All rights reserved.
|
|
#
|
|
# Use of this source code is governed by a BSD-style
|
|
# license that can be found in the LICENSE file or at
|
|
# https://developers.google.com/open-source/licenses/bsd
|
|
|
|
# If we're building a shared library, make sure it works. We only do this for
|
|
# a shared library because the static library won't wrap the third-party
|
|
# dependencies like absl.
|
|
if(LIBPACKAGER_SHARED)
|
|
# Install the library and headers to a temporary location.
|
|
set(TEST_INSTALL_DIR ${CMAKE_BINARY_DIR}/test-install)
|
|
|
|
# Custom commands aren't targets, but have outputs.
|
|
add_custom_command(
|
|
DEPENDS mpd_generator packager libpackager
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
|
OUTPUT ${TEST_INSTALL_DIR}
|
|
COMMAND
|
|
${CMAKE_COMMAND} --install . --prefix ${TEST_INSTALL_DIR} --config "$<CONFIG>")
|
|
|
|
# Custom targets with commands run every time, no matter what. A custom
|
|
# target with no command, but which depends on a custom command's output,
|
|
# gets us something that acts like a real target and doesn't re-run every
|
|
# time.
|
|
add_custom_target(test-install ALL DEPENDS ${TEST_INSTALL_DIR})
|
|
|
|
# Then try to build a very simplistic test app to prove that we can include
|
|
# the headers and link the library.
|
|
add_executable(packager_link_test test.cc)
|
|
|
|
# Both of these are needed. The first is a basic dependency to make sure
|
|
# test-install runs first, whereas the second treats test.cc as dirty if
|
|
# test-install runs again.
|
|
add_dependencies(packager_link_test test-install)
|
|
set_source_files_properties(test.cc PROPERTIES OBJECT_DEPENDS ${TEST_INSTALL_DIR})
|
|
|
|
target_link_directories(packager_link_test PRIVATE ${TEST_INSTALL_DIR}/lib)
|
|
target_include_directories(packager_link_test PRIVATE ${TEST_INSTALL_DIR}/include)
|
|
if(NOT MSVC)
|
|
target_link_libraries(packager_link_test -lpackager)
|
|
else()
|
|
target_link_libraries(packager_link_test ${TEST_INSTALL_DIR}/lib/libpackager.lib)
|
|
endif()
|
|
endif()
|