target_include_directories(subtraction PRIVATE include) target_link_libraries(main subtraction) # test no items target_include_directories(main PRIVATE) target_include_directories(main BEFORE PRIVATE) target_include_directories(main SYSTEM BEFORE PRIVATE) target_include_directories(main SYSTEM PRIVATE) 1. 2...
命名的<target>必须由诸如add_executable或add_library之类的命令创建,并且不能为ALIAS target。 需要INTERFACE, PUBLIC和PRIVATE关键字来指定它们后面的项的作用域(scope).PRIVATE和PUBLIC项将填充<target>的LINK_DIRECTORIES属性。PUBLIC和INTERFACE项将填充<target>的INTERFACE_LINK_DIRECTORIES属性(IMPORTED targets仅支持INT...
target_link_libraries(myProject comm)# 连接libhello.so库,默认优先链接动态库 target_link_libraries(myProject libcomm.a)# 显示指定链接静态库 target_link_libraries(myProject libcomm.so)# 显示指定链接动态库 # 再如: target_link_libraries(myProject libcomm.so)#这些库名写法都可以。 target_link_librari...
SET_TARGET_PROPERTIES (hello_static PROPERTIES CLEAN_DIRECT_OUTPUT 1) SET_TARGET_PROPERTIES (hello_shared PROPERTIES CLEAN_DIRECT_OUTPUT 1) # 4、按照规则,动态库是应该包含一个版本号的, # VERSION指代动态库版本,SOVERSION指代API版本。 SET_TARGET_PROPERTIES (hello_static PROPERTIES VERSION 1.1 SOVERSION...
target_link_libraries:这个CMake指令用于定义目标的链接库。在生成的Makefile中,这个指令会影响到链接命令,链接命令会包含对应的库文件。 add_subdirectory:这个CMake指令用于添加子目录。在生成的Makefile中,这个指令会导致生成一个新的Makefile文件在对应的子目录中。
在主项目的CMakeLists.txt中,我们可以使用子目录中的构建结果,例如库文件、可执行文件等。使用target_link_libraries()命令可以链接子目录中生成的库到主项目的目标中。 # 主项目的CMakeLists.txtadd_executable(mainmain.cpp)# 链接子目录生成的库target_link_libraries(mainlib1) ...
当我们在写CMakeLists.txt文件时,常常会搞不明白link_directories, LINK_LIBRARIES, target_link_libraries这3者的区别,下面就其详细介绍: INCLUDE_DIRECTORIES(添加头文件目录) 它相当于g++选项中的-I参数的作用,也相当于环境变量中增加路径到CPLUS_INCLUDE_PATH变量的作用(这里特指c++。c和Java中用法类似)。
target_link_libraries(myProject comm) # 连接libhello.so库,默认优先链接动态库 target_link_libraries(myProject libcomm.a) # 显示指定链接静态库 target_link_libraries(myProject libcomm.so) # 显示指定链接动态库 # 再如: target_link_libraries(myProject libcomm.so) #这些库名写法都可以。
target_link_libraries(${PROJECT_NAME} PUBLIC ${OpenCV_LIBS}) install( FILES $<TARGET_SONAME_FILE:opencv_core> $<TARGET_SONAME_FILE:opencv_imgproc> $<TARGET_SONAME_FILE:opencv_highgui> $<TARGET_SONAME_FILE:opencv_imgcodecs> DESTINATION ...