cmake ninja "отсутствует и неизвестно, как это сделать" - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть 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 это различие.Он проверяет, есть ли библиотека во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...