我有这个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
)
Run Code Online (Sandbox Code Playgroud)
共享导入的库将在文件Some.cmake 中创建,但必须先构建 tt。这是在文件中的add_custom_command(TARGET POST_BUILD ...)Something.cmake。
我在这里使用 CMake 构建没有任何问题,但是当我使用Ninja 时出现错误。
忍者:错误:“library.so”,“执行”需要,缺少并且没有已知的规则来制作它
或者你对如何做到这一点有什么建议?
我认为 Ninja 有一个要求,即“library.so”必须首先存在,但 CMake 是不同的。它在运行时检查库是否存在。