- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在构建两个 C++ 库(2 个 CMake 项目)。 library2
取决于 library1
.我正在 ${CMAKE_INSTALL_INCLUDEDIR}/mylibraries
安装我的第一个库头文件.现在包括library1
我的头文件 library2
,我在做include_directories(${CMAKE_INSTALL_FULL_INCLUDEDIR}/mylibraries)
在library2
的 CMakeLists.txt
.
但是 make 失败了 no such file or directory
错误。
library1.h
library2.cpp
中没有这样的文件或目录
library1 的 CmakeLists.txt
cmake_minimum_required (VERSION 3.5)
include(GNUInstallDirs)
project (logger)
set (VERSION_MAJOR 1)
set (VERSION_MINOR 0)
set (Umbrella "ferryfair")
# configure a header file to pass some of the CMake settings
# to the source code
configure_file (
"${PROJECT_SOURCE_DIR}/config.h.in"
"${PROJECT_BINARY_DIR}/config.h"
)
configure_file(
"${PROJECT_SOURCE_DIR}/pkgconfig.pc.in"
"${PROJECT_BINARY_DIR}/pkgconfig.pc"
)
set (GCC_COVERAGE_COMPILE_FLAGS "-std=c++14")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GCC_COVERAGE_COMPILE_FLAGS}")
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GCC_COVERAGE_LINK_FLAGS}")
file(GLOB HEADERS *.h)
file(GLOB SOURCES *.cpp)
include_directories(${PROJECT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_INSTALL_FULL_INCLUDEDIR}/${Umbrella})
add_library(${PROJECT_NAME}Static STATIC ${SOURCES} ${HEADERS})
add_library(${PROJECT_NAME} SHARED ${SOURCES} ${HEADERS})
set_target_properties(${PROJECT_NAME}Static PROPERTIES OUTPUT_NAME ${PROJECT_NAME})
set_target_properties(${PROJECT_NAME}
PROPERTIES
VERSION ${VERSION_MAJOR}.${VERSION_MINOR}
SOVERSION ${VERSION_MAJOR}
)
set_target_properties(${PROJECT_NAME}Static
PROPERTIES
VERSION ${VERSION_MAJOR}.${VERSION_MINOR}
SOVERSION ${VERSION_MAJOR}
)
target_link_libraries(${PROJECT_NAME}Static ferrybase)
target_link_libraries(${PROJECT_NAME} ferrybase)
install(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(TARGETS ${PROJECT_NAME}Static DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(FILES ${HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${Umbrella})
install(FILES "${PROJECT_BINARY_DIR}/config.h"
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${Umbrella}
RENAME ${PROJECT_NAME}Config.h)
install(FILES "${PROJECT_BINARY_DIR}/pkgconfig.pc"
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
RENAME "${PROJECT_NAME}.pc")
install(FILES "${PROJECT_BINARY_DIR}/pkgconfig.pc"
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig
RENAME "${PROJECT_NAME}.pc")
library2 的 CMakeLists.txt
cmake_minimum_required (VERSION 3.5)
include(GNUInstallDirs)
project (FFJSON)
IF (DEFINED _DEBUG)
ADD_DEFINITIONS(-D_DEBUG=${_DEBUG})
ENDIF()
set (VERSION_MAJOR 1)
set (VERSION_MINOR 0)
set (Umbrella "ferryfair")
IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
# Mac OS X specific code
SET(macOS ON)
ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
# configure a header file to pass some of the CMake settings
# to the source code
configure_file (
"${PROJECT_SOURCE_DIR}/config.h.in"
"${PROJECT_BINARY_DIR}/config.h"
)
configure_file(
"${PROJECT_SOURCE_DIR}/pkgconfig.pc.in"
"${PROJECT_BINARY_DIR}/pkgconfig.pc"
)
set (GCC_COVERAGE_COMPILE_FLAGS "-std=c++14")
set (GCC_COVERAGE_LINK_FLAGS "-Wl,-unresolved-symbols=ignore-in-shared-libs")
IF (DEFINED _DEBUG)
set (GCC_COVERAGE_COMPILE_FLAGS "${GCC_COVERAGE_COMPILE_FLAGS} -g -O0")
set (GCC_COVERAGE_LINK_FLAGS "${GCC_COVERAGE_LINK_FLAGS} -g -O0")
ENDIF()
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GCC_COVERAGE_COMPILE_FLAGS}")
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GCC_COVERAGE_LINK_FLAGS}")
file(GLOB HEADERS *.h)
file(GLOB SOURCES *.cpp)
include_directories(${PROJECT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_INSTALL_FULL_INCLUDEDIR}/${Umbrella})
add_library(${PROJECT_NAME}Static STATIC ${SOURCES} ${HEADERS})
add_library(${PROJECT_NAME} SHARED ${SOURCES} ${HEADERS})
set_target_properties(${PROJECT_NAME}Static PROPERTIES OUTPUT_NAME ${PROJECT_NAME})
set_target_properties(${PROJECT_NAME}
PROPERTIES
VERSION ${VERSION_MAJOR}.${VERSION_MINOR}
SOVERSION ${VERSION_MAJOR}
)
set_target_properties(${PROJECT_NAME}Static
PROPERTIES
VERSION ${VERSION_MAJOR}.${VERSION_MINOR}
SOVERSION ${VERSION_MAJOR}
)
target_link_libraries(${PROJECT_NAME}Static logger ferrybase)
target_include_directories(TestFFJSON PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:include/${Umbrella}>
)
add_executable(IteratorIncrement tests/iteratorincrement.cpp)
target_link_libraries(IteratorIncrement FFJSON logger ferrybase)
target_include_directories(IteratorIncrement PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:include/${Umbrella}>
)
add_test(test1 TestFFJSON)
add_test(test2 IteratorIncrement)
ENDIF()
最佳答案
这很奇怪!荒谬的!可怜!
执行 cmake
两次解决了这个问题。这是意外发现的又一次进入。
关于c++ - include_directories 和 CMAKE_INSTALL_FULL_INCLUDEDIR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40905048/
我有一个带有 .cpp 和 .h 源文件的自定义目标。通常,这些文件包含其他头文件。我想为要查看的头文件添加一个目录。 到目前为止,这听起来很容易,但这里有一个转折点。我正在使用自定义目标和自定义命令
我正在尝试将我的图书馆与其他图书馆链接起来 lib1使用 CMAKE 2.8 .应该说是在Windows上。 在CMakeLists.txt我有: add_library(mylib ${source
我正在用 C++ 编写项目,但在 cmake 中导入库时遇到问题。正在导入的第三方库不会传播包含目录。 根目录/CMakeLists.txt # Top level CMakeLists.txt cm
我正在尝试像 this example 中那样设置我的库和项目使用 ExternalProject_Add。 我有一个这样的图书馆: lib |-include | |-a.hpp |-src | |
这是我的项目树: project | + src | + external | | + foo | | | + include | | | | - foo.hpp | | | + src | | |
我了解 target_include_directories() 可以与 PUBLIC、INTERFACE 或 PRIVATE 结合使用以指定目录的范围或隐私。但是很多过时的代码仍然使用 includ
这个问题在这里已经有了答案: What is the difference between include_directories and target_include_directories in
我正在构建两个 C++ 库(2 个 CMake 项目)。 library2取决于 library1 .我正在 ${CMAKE_INSTALL_INCLUDEDIR}/mylibraries 安装我的第
我决定在我的项目中包含一个库(更具体地说是 yaml-cpp )。由于这两个项目(yaml-cpp 和我的)都使用 CMAKE 进行构建,我决定尝试将 yaml-cpp 目录放在我的根目录中,只使用
在 Meson 中,是否可以从调用 include_directories 创建的对象中获取字符串绝对路径? 我的用例: include_dirs = include_directories(
我有一个 cmake 构建,其中我正在搜索一堆依赖项,即我有很多实例: FIND_PACKAGE(SomePackage) if(SOMEPACKAGE_FOUND) include_direct
我正在尝试使用 cmake,但我是 cmake 和 c++ 的新手。我想要一段代码用于不同的其他程序。文件夹结构是这样的: /modules/foo /modules/foo/src /modules
我需要使用 mangrove(基于 mongo-c-driver 和 mongo-cxx-driver 的 mongo ODM 库)并将其作为 CMake ExternalProject_Add 命令
我在 CMake 中有 2 个项目 L 和 A,假设 L 是一个库,A 是一个依赖于 L 的应用程序。 文件夹层次结构如下: 一个 CMakeLists.txt + headers + src 大号
我的问题主要与 this (unanswered) question 有关在 CMake 邮件列表上。 本质上,我想了解 Visual Studio 2010 生成器幕后 include_direct
我在源代码树中有一个名为“time.h”的文件,与系统“time.h”完全一样。这是无法更改的。我遇到了 cmake 的问题,当我使用 include_library 选项时,它被转换为 -I 标志,
我试图了解可以在 target_include_directories 中指定的范围之间的区别,特别是 PRIVATE和 INTERFACE .文档说(特定上下文是仅 header 库): The I
我似乎在使用 -I 设置包含路径( include_directories() )时遇到问题CMake 中的命令。我的项目目录如下: Root | - CMakeLists.txt | - libs
我正在使用 CMake 来构建我的项目,我有以下几行: include_directories(${LLVM_INCLUDE_DIRS}) 其中,经过评估 LLVM_INCLUDE_DIRS , 评估
我们正在尝试交叉编译某个软件,并且在大多数情况下它一直有效。但是,包含文件分为多个目录,如果目录位于 sysroot 树之外,有时 CMake 决定不将其添加到 Makefile 上的包含列表中。 工
我是一名优秀的程序员,十分优秀!