Directory CMAKE-通过CMAKE更改outdir宏
阅读这里的其他问题,我发现可以在de visual studio中更改outdir宏。我真的找过了,但不知道怎么做 很简单。我只想更改项目属性->配置属性->常规->输出目录。因为我知道这会改变outdir宏Directory CMAKE-通过CMAKE更改outdir宏,directory,cmake,visual-studio-2005,output,Directory,Cmake,Visual Studio 2005,Output,阅读这里的其他问题,我发现可以在de visual studio中更改outdir宏。我真的找过了,但不知道怎么做 很简单。我只想更改项目属性->配置属性->常规->输出目录。因为我知道这会改变outdir宏 我知道这是通过使用某种cmake属性来设置目标属性实现的,但我真的没有找到方法。正如您所怀疑的,这非常简单。您需要查看、和目标属性来修改outdir路径 这些变量也都有特定于配置的变量(例如,ARCHIVE\u OUTPUT\u DIRECTORY\u DEBUG),并且都可以由同名的全局
我知道这是通过使用某种cmake属性来设置目标属性实现的,但我真的没有找到方法。正如您所怀疑的,这非常简单。您需要查看、和目标属性来修改outdir路径 这些变量也都有特定于配置的变量(例如,
ARCHIVE\u OUTPUT\u DIRECTORY\u DEBUG
),并且都可以由同名的全局CMake变量初始化,并在前面加上一个CMake
所以,你可以做
set_target_properties(MyExe PROPERTIES RUNTIME_OUTPUT_DIRECTORY <custom path>)
set\u target\u属性(MyExe属性运行时\u输出\u目录)
或者,为了影响所有的目标,
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY <custom path>)
set(CMAKE\u运行时\u输出\u目录)
注意。从文档中:
多配置生成器(VS,Xcode)将每个配置子目录追加到指定目录
下面是一个显示这种行为的示例。它编写自己的普通C++源文件,所以你需要做的就是把它复制到一个文件夹中,调用cFube,然后尝试在调试、发布、MsisiSeleL和ReluDeBiFo中构建结果解决方案。使用VS2012进行测试。无论构建类型如何,可执行文件总是以/Exes/Debug
结尾,同样,库也总是以/Libs/Debug
结尾
cmake_minimum_required(VERSION 2.8.11 FATAL_ERROR)
project(Example)
file(WRITE lib.hpp "void Print();\n")
file(WRITE lib.cpp "#include<iostream>\nvoid Print() { std::cout << \"Hello World\\n\"; }\n")
file(WRITE main.cpp "#include \"lib.hpp\"\nint main() { Print(); return 0; }\n")
set(ArchiveOutputDir ${CMAKE_BINARY_DIR}/Libs/Debug)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${ArchiveOutputDir})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_MINSIZEREL ${ArchiveOutputDir})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${ArchiveOutputDir})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO ${ArchiveOutputDir})
set(RuntimeOutputDir ${CMAKE_BINARY_DIR}/Exes/Debug)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${RuntimeOutputDir})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${RuntimeOutputDir})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${RuntimeOutputDir})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${RuntimeOutputDir})
add_library(MyLib lib.cpp lib.hpp)
add_executable(MyExe main.cpp)
target_link_libraries(MyExe MyLib)
cmake_最低要求(版本2.8.11致命错误)
项目(示例)
文件(写入lib.hpp“void Print();\n”)
文件(WRITE lib.cpp“#include\nvoid Print(){std::cout最后,对我有效的方法是将完整路径放在目标链接库上,使用调试前缀和优化前缀指向发布配置,使用relwithdebinfo配置发布路径并调试。我还删除了链接目录……如果我不懂,我不知道,但它对我有效!我尝试了所有的then.D我不工作,我会读更多关于那个的,但只是为了确定。我想做的是更改$(outdir)设置为Release或Debug的宏。它是在附加库依赖项上自动添加的。例如,我希望将所有更改为always Debug,如果我真的在VS上调试,则不匹配。是否设置了CMAKE\u ARCHIVE\u OUTPUT\u DIRECTORY\u Debug
变量(或任意变量)在调用add_library
或add_executable
之前,这些默认的CMake变量用于在声明本地目标属性的位置初始化这些属性。例如,要在同一目录中创建所有库,而不考虑构建类型,只需设置CMake_ARCHIVE_OUTPUT_directory(输出目录)的所有版本
相同的值。经过很多天的尝试,没有工作。我有这个:c:\dir\anotherDir\Release(发布版本),但我想要这个:c:\dir\anotherDir\Debug(发布版本)在附加库目录中,我添加了一个示例CMakeLists.txt。我还注意到您已将问题标记为VS2005。如果这对您不起作用,我认为VS版本可能是问题所在。这当然适用于VS2010以后的版本。最后,对我起作用的是将完整路径放在目标链接上带有调试前缀和优化前缀的白羊座指向发布配置,relwithdebinfo配置指向发布路径,调试指向调试。我还删除了链接目录…我不明白,但它对我有用!谢谢你的帮助!我真的很感激!你能在这里发布cmakelist.txt的部分供参考吗?对不起,公司代码我再也无法访问了。