ily*_*lya 5 c++ cmake qt-creator visual-studio
我必须在 Windows 中处理 CMake 3.x、Qt Creator 3.3.0、Qt 4.8.6、Visual Studio 2008(在 Debian 中很少使用 Qt Creator + GCC)。
这个指令
安装(目标 ${PROJECT} 目的地 ${CMAKE_INSTALL_PREFIX}/lib)
不舒服,因为*.lib在同一目录中混合调试和发布文件。我想保存libs在相应的子文件夹中。
我从这里尝试了以下说明:
安装(目标 ${PROJECT} DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/\${BUILD_TYPE})
它适用于 Visual Studio,因为它是一个多配置解决方案,我们通过${BUILD_TYPE}反斜杠保护'\'以进一步传播。但是我怎样才能实现相同的输出Qt Creator + MS C++ compiler呢?我应该分配Debug(例如)给${CMAKE_BUILD_TYPE}(通过命令行界面)和特殊的自定义标志,它告诉 CMake 我们处理 nmake/make 吗?我的意思是有条件的安装指令,它可以在 Windows 和 Linux 中正常工作,并且CMake. 如果有标准解决方案,我不想重新发明轮子。
您看到可以在编译时BUILD_TYPE使用变量集来在安装时配置库的目标文件夹。这是 Visual Studio 特有的。
在其他构建系统(make、nmake、ninja 等)中,您必须使用CMAKE_BUILD_TYPE变量,在配置时设置以检索相同的信息。在这种情况下,正如您所感觉到的,必须在单独的构建文件夹中生成不同的配置(调试和发布)。在这些文件夹中,CMake 生成步骤是使用变量中的正确值完成的CMAKE_BUILD_TYPE。例子:
cd /home/user/project/xx_project/build_release
cmake -DCMAKE_BUILD_TYPE=Release /home/user/project/xx_project/src
cd /home/user/project/xx_project/build_debug
cmake -DCMAKE_BUILD_TYPE=Debug /home/user/project/xx_project/src
Run Code Online (Sandbox Code Playgroud)
要检测用户是从 Visual Studio 还是从命令行构建,“有一个变量”:MSVC_IDE Cmake 变量
解决方案可以是这样的
if(MSVC_IDE)
install(TARGETS ${PROJECT} DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/\${BUILD_TYPE})
else()
install(TARGETS ${PROJECT} DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/${CMAKE_BUILD_TYPE})
endif()
Run Code Online (Sandbox Code Playgroud)
我不完全确定 ${CMAKE_BUILD_TYPE} 之前反斜杠的必要性。你应该自己测试一下
| 归档时间: |
|
| 查看次数: |
1375 次 |
| 最近记录: |