[英]How to add “jni/*.c/cpp” files to CMakeLists.txt file?
[英]How should I add C++ header files in this CMakeLists.txt file?
CMakeLists.txt
add_library(systems
AtomTypes.cc
AtomTypingVariants.cc
BuildPolymerChain.cc
CartesianAtoms.cc
CartesianChains.cc
SimpleAtomTyping.cc
)
add_subdirectory(surpass)
target_link_libraries(systems
PRIVATE
surpass
)
我添加了源文件,现在需要在上面的文件中添加header个文件。
以上文件是否正确?
我应该如何在上面的CMakeLists.txt
文件中添加header 个文件?
我应该将target_sources()
与PUBLIC
限定符或add_libraries()
一起使用吗?
对于构建逻辑,无论您是否将 header 文件添加到源列表都没有区别。 我建议添加它们 n.netheless,因为这会导致像 Visual Studio 这样的 IDE 将这些文件列为目标的源。 您可以在与翻译单元(.cc 文件)相同的位置列出这些 header 文件。
add_library(...
AtomTypes.cc
AtomTypes.hh
...
)
我应该将
target_sources()
与PUBLIC
限定符或add_libraries()
一起使用吗?
您可以选择使用target_sources
还是add_libraries
添加源或标头。 一般来说,您应该使用target_sources(... PRIVATE...)
,因为列出的任何具有PUBLIC
或INTERFACE
可见性的来源也将成为链接目标的一部分。
我个人倾向于在创建目标的命令中列出始终属于目标的源和标头,并使用target_sources
作为添加有条件包含的源的方法。 不过,您也可以为此目的创建列表变量。
add_library(foo STATIC
a.cpp
a.hpp
b.cpp
b.hpp
c.hpp
)
if (WIN32)
target_sources(foo PRIVATE c.win.cpp)
else()
target_sources(foo PRIVATE c.other.cpp)
endif()
或者
set(SOURCES
a.cpp
b.cpp
)
set(HEADERS
a.hpp
b.hpp
c.hpp
)
if (WIN32)
list(APPEND SOURCES c.win.cpp)
else()
list(APPEND SOURCES c.other.cpp)
endif()
add_library(foo STATIC ${HEADERS} ${SOURCES})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.