其实private/public 解决的是指示问题,本质上可以使用public 来解决, 可以减少坑。 下面是target_link_libraries中的解释,不想看英文的,直接拉到最后。 Link Inheritance Similarly, for anytarget, in the linking stage, we would need to decide, given theitemto be linked, whether we have to put theitemi...
target_link_libraries(subtraction_shared INTERFACE add_shared) # 也可以为PUBLIC;但不可以为PRIVATE,若为PRIVATE,则会报error:sample_add.cpp:(.text+0x25): undefined reference to `add(int, int)' add_executable(sample_add ${CMAKE_CURRENT_SOURCE_DIR}/samples/sample_add.cpp) target_link_libraries(...
target_link_libraries(bar PUBLIC foo) 链接为public,main函数正常调用foo(),bar中正常调用foo(),库foo链接给bar,同时foo也被传给了main。 target_link_libraries(bar PRIVATE foo) 编译,发现main.cpp: undefined reference to `foo()',main.cpp这个编译单元找不到foo()这个符号,库foo链接到bar就被终结了,bar...
target_include_directories():指定目标包含的头文件路径。官方文档 target_link_libraries():指定目标链接的库。官方文档 target_compile_options():指定目标的编译选项。官方文档 目标 由add_library() 或add_executable() 生成。 这三个指令类似,这里以 target_include_directories() 为例进行讲解。 2. 指令讲解 ...
在你用target_link_libraries注册依赖的时候,taichi::runtime的PUBLIC项目会被一并注册到你的构建目标下面。也就是说,绝大多数情况,你不需要再用target_include_directories注册依赖的包含目录了,非常方便。 换句话说,大多数情况下,下面的代码是等价的:
如果目标的头文件中包含了依赖的头文件(源文件间接包含),那么这里就是PUBLIC 如果目标仅源文件中包含了依赖的头文件,那么这里就是PRIVATE 如果目标的头文件包含依赖,但源文件未包含,那么这里就是INTERFACE https://cmake.org/cmake/help/v3.0/manual/cmake-buildsystem.7.html#transitive-usage-requirements...
在CMake中,当我们定义一个库或可执行文件,并希望它依赖于其他库或目标时,我们可以使用target_link_libraries或target_sources等命令来建立这种依赖关系。但除了这些基本命令,CMake还提供了三个关键字:PUBLIC, PRIVATE, 和 INTERFACE,用于更细致地控制这些依赖关系的作用域和可见性。 PUBLIC 当我们将一个目标A链接到另...
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include/public INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/include/interface ) # 链接另一个库,并使用其头文件 target_link_libraries(my_lib PUBLIC other_lib) # 另一个库也可以使用当前库的头文件 add_library(other_lib STATIC other_source.cpp) ...
在CMake中,target_link_libraries函数用于将一个目标(target)与所需的库进行链接。它的语法如下:vb...
以下是target_link_libraries函数的几种常见用法: 1.链接系统库 ``` target_link_libraries(mytarget ${CMAKE_THREAD_LIBS_INIT}) ``` 在这个例子中,mytarget是项目中的目标,${CMAKE_THREAD_LIBS_INIT}表示系统线程库。这样可以确保目标程序能够调用线程相关的函数。 2.链接自定义静态库 ``` target_link_libra...