У меня проблема с зависимостями в моей конфигурации cmake. Когда я начинаю строить из корневого каталога проекта, он всегда дает ошибку. Когда я отключу add_subdirectory(application)
, где я использую LibCalcBin
, он успешно создает library
. Тогда я смогу построить application
.cmake порядок выполнения команды add_subdirectory
Почему cmake не строит library
, а затем application
, как я указал в порядке команд add_subdirectory. Есть ли способ решить эту проблему? Благодарю.
Ошибка
Please set them or make sure they are set and tested correctly in the CMake files:
LibCalcBin
linked by target "run" in directory ...
./CMakeList.txt (Корневой каталог)
cmake_minimum_required(VERSION 3.3)
project(DLLAbstract)
# specify where to put executable
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
# specify where to put binaries
SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
# compile and build library
add_subdirectory(library)
# compile and build application
add_subdirectory(application)
./library
set(src LibCalc.cpp Calculator.cpp)
add_definitions(-DDLL_EXPORT)
add_library(LibCalc SHARED ${src})
./application
set(Src main.cpp)
find_path(LibCalcHeader
NAMES
LibCalc.hpp
PATHS
${PROJECT_SOURCE_DIR}/library
)
find_library(LibCalcBin
NAMES
LibCalc
PATHS
${PROJECT_SOURCE_DIR}/bin/Debug
${PROJECT_SOURCE_DIR}/bin/Release
${PROJECT_SOURCE_DIR}/bin
)
include_directories(${LibCalcHeader})
add_executable(run ${Src})
target_link_libraries(run ${LibCalcBin})
Почему вы ищете для вашей библиотеки? Просто делайте 'target_link_libraries (запустите LibCalc)' – arrowd
@arrowd Я тестировал cmake для простых тематических исследований и хотел показать тематическое исследование функции find_library. Однако в этом случае просто использование 'target_link_libraries' автоматически создаст зависимость между приложением и библиотекой, чтобы решить мою проблему. Вы можете отправить ответ, я приму его. благодаря –