如何使用"CMakeLists.txt"中的add_library将整个文件(.cpp,.h等)包含在目录中
How can I use add_library in 'CMakeLists.txt' to include entire files(.cpp,.h etc) in a directory
在我的项目中,我正在使用cpp和.h文件,它们都在不同的文件夹中
|-src
|-main
|-java
|-cpp
|-native-lib.cpp
|-library-1
|-include
|-lib11.h
|-lib12.h
|-...
|-library-2
|-include
|-lib21.h
|-lib22.h
|-...
在当前版本中,我正在将每个文件添加到'CMakeLists.txt'
...
add_library(# Sets the name of the library.
native-lib
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
src/main/cpp/native-lib.cpp
src/main/cpp/library-1/include/lib10.h
src/main/cpp/library-1/include/lib11.h
src/main/cpp/library-1/include/lib12.h
src/main/cpp/library-1/include/lib13.h
...
src/main/cpp/library-2/include/lib21.h
src/main/cpp/library-2/include/lib22.h
src/main/cpp/library-2/include/lib23.h
...
)
...
我尝试像下面这样添加
...
add_library(# Sets the name of the library.
native-lib
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
src/main/cpp/native-lib.cpp
src/main/cpp/library-1/include/*.h #expected result: it will include all '.h' files in directory, but gradle sync failed
src/main/cpp/library-2/include/*.h#expected result: it will include all '.h' files in directory, but gradle sync failed
)
...
使用 add_library
将所有文件包含在文件夹中的任何其他方法
在幸运的建议下
# For more information about using CMake with Android Studio, read the
# documentation: https://d.android.com/studio/projects/add-native-code.html
# Sets the minimum version of CMake required to build the native library.
cmake_minimum_required(VERSION 3.4.1)
# Creates and names a library, sets it as either STATIC
# or SHARED, and provides the relative paths to its source code.
# You can define multiple libraries, and CMake builds them for you.
# Gradle automatically packages shared libraries with your APK.
include_directories(src/main/cpp/library-1/include)
include_directories(src/main/cpp/library-2/include)
file(GLOB SOURCES "src/*.h")
add_library( # Sets the name of the library.
native-lib
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
src/main/cpp/native-lib.cpp
${SOURCES}
)
# Searches for a specified prebuilt library and stores the path as a
# variable. Because CMake includes system libraries in the search path by
# default, you only need to specify the name of the public NDK library
# you want to add. CMake verifies that the library exists before
# completing its build.
find_library( # Sets the name of the path variable.
log-lib
# Specifies the name of the NDK library that
# you want CMake to locate.
log )
# Specifies libraries CMake should link to your target library. You
# can link multiple libraries, such as libraries you define in this
# build script, prebuilt third-party libraries, or system libraries.
target_link_libraries( # Specifies the target library.
native-lib
# Links the target library to the log library
# included in the NDK.
${log-lib} )
您可以生成源文件的列表:
file(GLOB SOURCES "src/*.h")
现在,SOURCES 变量可以用作add_library中的参数。
add_library(native-lib SHARED ${SOURCES})
相关文章:
- 无法在UE4中包含BP类到CPP类
- 包含在.cpp文件中包含在 .h 文件时包含
- 如果 x.h 仅由函数声明组成,为什么有必要在 x 中包含 x.h.cpp
- 链接列表在 cpp 中包含不同的对象类
- C++ .h 包含从一个类传递到另一个类的类和.cpp
- C2011: 'Card':"类"类型重新定义(尽管使用了包含保护并且没有在文件中重新定义.cpp类)
- 在头文件上包含 cpp 文件是否有缺点?
- 我可以(不)在.cpp文件中包含哪些内容?
- 包含来自 boost 1.73.0 的read_graphviz_new.cpp无法编译
- 标头包含不是 .c 程序所必需的,而是.cpp程序需要的
- main.cpp 如何知道包含标头的源文件?
- 当我有多个类时,我应该以线性样式包含它们还是只包含在 main.cpp 中?
- 包含 .h 文件和 c/cpp 文件有什么区别?
- 如何在 CMakeList 中包含 h/hpp 头文件.txt而不是 cpp 或其他 hpp 文件
- QT 如何包含标头和 cpp 文件
- 将仅标头库的包含包装在单个 cpp 文件中
- 在实现(.cpp)文件中不包含相应的头文件(.h)文件仍然编译?
- 如何将 cpp 包含在另一个 cpp 中,例如复制粘贴而不是声明
- #在include保护结束之前将.cpp包含在.h文件中
- CPP包含头文件导致成千上万的错误