У меня есть CMakeLists.txt
cmake_minimum_required(VERSION 3.8)
include(${CMAKE_CURRENT_SOURCE_DIR}/src/Something.cmake)
add_executable(execute main.cpp)
add_dependencies(somethingInterface Something)
add_dependencies(execute somethingInterface)
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/src
)
target_compile_options(execute
PRIVATE
-std=c++11
-g
)
add_library(library SHARED IMPORTED)
set_target_properties(library PROPERTIES IMPORTED_LOCATION ${CMAKE_BINARY_DIR}/library.so)
target_link_libraries(execute
PRIVATE
library
)
Импортированная совместно используемая библиотека будет создана в Something.cmake, но Сначала она должна быть построена .Это было add_custom_command (TARGET POST_BUILD ...) в Something.cmake
У меня нет проблем с использованием сборок CMake здесь, но когда я использую ниндзя, там ошибка .
ninja: error: 'library.so', needed by 'execute', missing and no known rule to make it
Или у вас есть какие-либо предложения о том, как вы можете это сделать?
Я думаю, что у ниндзя есть требование, что "library.so" должен существовать в первую очередь, но cmake это различие.Он проверяет, есть ли библиотека во время выполнения.