main.c 和 libhello-world.so 都使用 libhello.so 的功能,hello-world/CMakeLists.txt 中使用 PUBLIC 关键字; 3. include_directories(dir) target_include_directories()的功能完全可以使用include_directories()实现。但是我还是建议使用target_include_directories()。为什么?保持清晰! include_directories(header-di...
9. 为生成的target配置安装目录 CMAKE_INSTALL_PREFIX SET(CMAKE_INSTALL_PREFIX <你要安装的路径>) 1. install(TARGETS MyLib EXPORT MyLibTargets LIBRARY DESTINATION lib # 动态库安装路径 ARCHIVE DESTINATION lib # 静态库安装路径 RUNTIME DESTINATION bin # 可执行文件安装路径 PUBLIC_HEADER...
target_include_directories()的功能完全可以使用include_directories()实现。但是我还是建议使用target_include_directories()。为什么?保持清晰! include_directories(header-dir)是一个全局包含,向下传递。什么意思呢?就是说如果某个目录的 CMakeLists.txt 中使用了该指令,其下所有的子目录默认也包含了header-dir目录。
# 1.target 放到 DESTINATION 指定的目录 #install(TARGETS ... RUNTIME DESTINATION bin)#exe #install(TARGETS ... LIBRARY DESTINATION lib)#*.so #install(TARGETS ... ARCHIVE DESTINATION lib/static)#*.lib #install(TARGETS ... PUBLIC_HEADER DESTINATION include)#公共头文件的安装路径 #install(TARGETS...
--target install # 或者针对make构建工具 make install 更加优雅的方法是在cmake3.15版本往后,使用cmake --install命令: cmake --install . --prefix "../output" --install指定构建目录;--prefix指定安装路径,覆盖安装路径变量CMAKE_INSTALL_PREFIX。 二 打包 1 CPack 要使用打包功能,需要执行include(CPack)...
(3).CXX_MODULE_HEADER_UNITS:实验性的。 INTERFACE或PUBLIC文件集中的文件可以使用install(TARGETS)命令安装,并使用install(EXPORT)和export命令导出。 每个target_sources(FILE_SET)条目都以INTERFACE, PUBLIC或RIVATE开头,并接受以下参数: (1).FILE_SET <set>:要创建或添加到的文件集的name.它只能包含字母、数字和...
PRIVATE_HEADER: 与PUBLIC_HEADER类似,但是作用于PRIVATE_HEADER文件 RESOURCE: 与PUBLIC_HEADER和PRIVATE_HEADER类似,但是作用于RESOURCE文件 FILE_SET <set>(3.23版本新增): 文件集合通过target_sources(FILE_SET)命令定义,如果文件集合<set>存在并且是PUBLIC或INTERFACE,那么集合中的文件会被安装到目的路径。相对文件集合...
对于public的property,会传递,也自己用。 对于interface的property,会传递,但不会自己用public和interface的属性是可传递属性 可见性的传递是依靠target_link_libraries,传递的规则如下: 假设如下链接关系 target_link_libraries(B XXX A)// XXX为private,public,interface如果XXX为private,A的可传递属性变成B的privatepro...
在CMake中,PUBLIC权限是一个非常有用的工具,它允许我们在目标自身和其他链接到该目标的项目中都使用某个库。这意味着,当我们声明一个库为PUBLIC依赖时,不仅当前目标可以访问该库,而且任何链接到当前目标的其他目标也可以访问它。 target_link_libraries(my_target PUBLIC another_library) ...
target_include_directories(MyExecutablePRIVATE ${PROJECT_SOURCE_DIR}/include) 9、安装规则: install(TARGETS target1[target2...][RUNTIME DESTINATION dir][LIBRARY DESTINATION dir][ARCHIVE DESTINATION dir][INCLUDES DESTINATION[dir...]][PRIVATE_HEADER DESTINATION dir][PUBLIC_HEADER DESTINATION dir]) ...