2、如果MathFunctions需要被编译与使用,那么USE_MYMATH就需要被定义; 3、变量(该例程中的EXTRA_LIBS)的使用,可以用来收集任意可选的库,并在后面的代码中慢慢被链接到可执行文件;在维护大型工程时,通常有很多可选部分,为了保持工程的清晰,这是一种普遍用法。 代码语言:javascript 代码运行次数:0 运行 AI代码解释 ...
# 并将名称保存到DIR_SRCS变量aux_source_directory(.DIR_SRCS)# 指定生成目标add_executable(Demo ${DIR_SRCS})target_link_libraries(Demo ${EXTRA_LIBS}) 其中: 第6行的option命令添加了一个USE_MYMATH选项,并且默认值为ON。 第9行的configure_file命令用于加入一个配置头文件config.h,这个文件由CMake从con...
if(USE_MYMATH) add_subdirectory(MathFunctions) list(APPEND EXTRA_LIBS MathFunctions) list(APPEND EXTRA_INCLUDES "${PROJECT_SOURCE_DIR}/MathFunctions") endif() # 添加可执行文件 add_executable(Tutorialtutorial.cxx) #之后必须位于 add_executabletarget_link_libraries(Tutorial PUBLIC ) ${EXTRA_LIBS}) ...
对于target_link_libraries()[31],我们将写出的库名称替换为 EXTRA_LIBS。这看起来像下面这样: # TODO 9 target_link_libraries(Tutorial PUBLIC ${EXTRA_LIBS}) 然后,我们对 target_include_directories()[32] 和EXTRA_INCLUDES 做同样的事情。 # TODO 10 target_include_directories(Tutorial PUBLIC "${PROJECT...
_subdirectory (math)3233set(EXTRA_LIBS ${EXTRA_LIBS} MathFunctions)3435endif (USE_MYMATH)3637# 查找当前目录下的所有源文件3839# 并将名称保存到 DIR_SRCS 变量4041aux_source_directory(. DIR_SRCS)4243# 指定生成目标4445add_executable(Demo ${DIR_SRCS})4647target_link_libraries (Demo ${EXTRA_LIBS...
set (EXTRA_LIBS ${EXTRA_LIBS} MathFunctions) endif (USE_MYMATH) # 查找当前目录下的所有源文件 # 并将名称保存到 DIR_SRCS 变量 aux_source_directory(. DIR_SRCS) # 指定生成目标 add_executable(Test5 ${DIR_SRCS}) # 添加链接库 target_link_libraries(Test5 ${EXTRA_LIBS}) ...
target_link_libraries(demo ${EXTRA_LIBS}) # 指定安装路径 install (TARGETS demo DESTINATION bin) install (FILES "${PROJECT_BINARY_DIR}/config.h" DESTINATION include) enable_testing() # 测试程序是否成功运行 add_test (test_run demo 3 2) ...
这里用USE_MYMATH设置来决定是否MathFunctions应该被编译和执行。注意到,要用一个变量(在这里是EXTRA_LIBS)来收集所有以后会被连接到可执行文件中的可选的库。这是保持带有许多可选部件的较大型工程干净清爽的一种通用的方法。源代码对应的改变相当直白,如下所示: ...
这将根据 USE_MYMATH 的设置来决定是否编译并使用 MathFunctions 库。注意这里使用了一个 EXTRA_LIBS 变量来收集任何可选的库,以在之后链接到可执行文件中。对有许多可选组件的项目,这是一种保持其整洁的常用方法。相应的源代码更改如下: / A simple program that computes the square root of a number #includ...
[PREFIX, left empty string for none]"ATFRAMEWORK_CMAKE_TOOLSET_THIRD_PARTY_<PACKAGENAME:UPPERCASE>_BUILD_OPTIONSBUILD_SHARED_LIBS)if(ATFRAMEWORK_CMAKE_TOOLSET_THIRD_PARTY_<PACKAGENAME:UPPERCASE>_PATCH_FILEANDEXISTS"${ATFRAMEWORK_CMAKE_TOOLSET_THIRD_PARTY_<PACKAGE NAME:UPPERCASE>_PATCH_FILE}")...