cmake 输出物:
RUNTIME 输出物:
一个子系统的运行时输出物目标可以是下面的东西:
可执行的文件(.exe)由add_executable()命令创建
在 DLL 平台:它是共享库的可执行文件(.dll),由add_library()命令生成后跟SHARED 选项来创建.
RUNTIME_OUTPUT_DIRECTORY和RUNTIME_OUTPUT_NAME 目标属性可以用来控制构建树中输出物的位置和名称.
LIBRARY 输出物:
一个构建系统的库输出物目标可以是下面的东西:
一个模块库的可加载模块文件(.dll | .so)可由add_library()后跟 MODULE 选项创建.
在非DLL平台:标准的共享库文件(.so | .dylib)由add_library()后跟SHARED 选项创建.
LIBRARY_OUTPUT_DIRECTORY和LIBRARY_OUTPUT_NAME目标属性可以用来控制构建树上的输出物的位置和名称
ARCHIVE 输出物:
一个构建系统的存档输出物可以是:
静态库文件(.lib|.a) 由add_library() 后跟 STATIC 选项创建
在DLL 平台:共享库的导入文件(.lib)由add_library 后跟SHARED 选项创建.这个文件仅确保库文件导出中至少存在一个非托管的符号.
在DLL 平台:可执行目标的导入库(.lib)可以由 add_executable命令创建---当跟着ENABLE_EXPORTS目标属性被设置的时候.
ARCHIVE_OUTPUT_DIRECTORY和ARCHIVE_OUTPUT_NAME目标属性可以控制构建树上的输出存档位置和名称.
目录-范围命令:
该 target_include_directories(), target_compile_definitions() 和 target_compile_options()命令一次只对一个目标有影响。命令add_definitions(), add_compile_options() 和 include_directories() 具有类似的功能,
但为方便起见,在目录范围而不是目标范围内操作。
windows 下只需要设置 CMAKE_RUNTIME_OUTPUT_DIRECTORY系列就可以
在linux 下需要设置 CMAKE_LIBRARY_OUTPUT_DIRECTORY
在linux 静态库需要设置 CMAKE_ARCHIVE_OUTPUT_DIRECTORY
这是我的例子
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELWITHDEBINFO ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/lib/debug)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/lib/release)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO ${CMAKE_BINARY_DIR}/lib/Release)
这样我们就能统一将输出的文件放到一个目录,对于以后的制作安装包就方便了一些.
————————————————
版权声明:本文为CSDN博主「枫舞的季节」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/justin_bkdrong/article/details/81631758