指定cmake如何创建visual studio项目
Specify how cmake creates visual studio project
我正在为我的项目设置cmake,我已经为它设置了一个测试项目。当它生成我的visual studio 2010项目时,我想让它成为我之前的项目。
- 它创建了一个我不想要的ALL_BUILD和ZERO_CHECK项目。
- 将。h文件放到External Dependencies文件夹中。我想要一个包含文件文件夹,其中所有的。h文件。
- 我还想把一些文件分组在不同的过滤器下。就像在我的核心库中,我想将所有与数学相关的文件分组在一个文件夹中,并将所有与事件管理相关的文件分组在另一个文件夹中。
- 在文件系统中,它将项目文件放在/Lib/src中。可能是因为我把它组织在代码文件夹中,但我不希望项目文件这样。
- 我想设置不同的配置,所以我有DebugOpenGL, DebugDirectX, ReleaseOpenGL, ReleaseDirectX,然后设置一个标志USE_OPENGL或USE_DIRECTX两种类型的配置。
当我在windows上构建和在linux上构建时,我如何排除一些文件?比如我有WindowWin.cpp和WindowLinux.cpp.
我已经试过你的建议,但不能使它工作:
#LibProject/src
FILE(GLOB test0_headers $CMakeTest_SOURCE_DIR/LibProject/inc/test.h)
source_group(include0 FILES ${test0_headers})
FILE(GLOB test0_source ${CMakeTest_SOURCE_DIR}/LibProject/src/test.cpp)
source_group(source0 FILES ${test0_source})
FILE(GLOB test1_headers $CMakeTest_SOURCE_DIR/LibProject/inc/test1.h)
source_group(include1 FILES ${test1_headers})
FILE(GLOB test1_source ${CMakeTest_SOURCE_DIR}/LibProject/src/test1.cpp)
source_group(source1 FILES ${test1_source})
include_directories(${test0_headers} ${test1_headers})
add_library(LibProject ${test0_headers} ${test1_headers} ${test0_source} ${test
1_source})
我现在好像修好了…我只是想要子文件夹头文件和源文件在源组。
set(test_source0 ${CMakeTest_SOURCE_DIR}/LibProject/inc/test.h ${CMakeTest_SOURCE_DIR}/LibProject/src/test.cpp)
source_group(TEST FILES ${test_source0})
set(test_source1 ${CMakeTest_SOURCE_DIR}/LibProject/inc/test2.h ${CMakeTest_SOURCE_DIR}/LibProject/src/test2.cpp)
source_group(TEST2 FILES ${test_source1})
include_directories(${CMakeTest_SOURCE_DIR}/LibProject/inc)
add_library(LibProject ${test_source0} ${test_source1})
这是我的解决方案:)
set(test_header
${CMakeTest_SOURCE_DIR}/LibProject/inc/test.h)
set(test_source
${CMakeTest_SOURCE_DIR}/LibProject/src/test.cpp)
source_group(TEST\Headers FILES ${test_header})
source_group(TEST\Source FILES ${test_source})
set(test2_header
${CMakeTest_SOURCE_DIR}/LibProject/inc/test2.h)
set(test2_source
${CMakeTest_SOURCE_DIR}/LibProject/src/test2.cpp)
source_group(TEST2\Headers FILES ${test2_header})
source_group(TEST2\Source FILES ${test2_source})
include_directories(${CMakeTest_SOURCE_DIR}/LibProject/inc)
add_library(LibProject
${test_header}
${test_source}
${test2_header}
${test2_source})
要在Visual Studio中将文件分组到一个文件夹中,可以使用:
# Include files
FILE(GLOB all_headers "include/*.h*")
source_group("include" FILES ${all_headers})
# Source files
FILE(GLOB all_srcs "src/*.cpp")
source_group("source" FILES ${all_srcs})
这将把位于include文件夹中的所有.h文件显示在Visual Studio中名为include的文件夹中。您的cpp文件也是如此。如果你想要的话,你可以使用这个技术在CMake中创建你自己的结构。
对于ALL_BUILD和ZERO_CHECK的目的,读取这个答案。要禁用ZERO_CHECK的生成,使用set(CMAKE_SUPPRESS_REGENERATION true)
.
要在OpenGL和DirectX之间进行选择并设置适当的文件夹,您可以使用上面使用的相同技术,但将它们放在
中。if(${USE_OPENGL})
FILE(GLOB ....)
endif()
我想你明白了。
我会回答我知道的:
ALL_BUILD和ZERO_CHECK用于使您的项目与CMakeFiles的更改保持同步。我不认为有办法摆脱这些。
要获得所需的.h文件,需要将它们作为源代码的一部分包含。我使用如下代码:
file(GLOB LocalProjectIncludes "${yourheaderdirectory}/*.h")
然后我将${LocalProjectIncludes}附加到项目的源文件中。CMake会发现它们是头文件;它不会尝试构建它们
相关文章:
- Visual Studio 2015:Extern "C" 和 "export" 关键字
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 试图在visual studio上用C++创建一个桌面应用程序
- 如何在MS Visual Studio 2019中运行QT UI
- 如何使用Visual Studio 2017在C++中为参数化对象数组使用唯一指针
- Visual Studio Code - C++ Debugger 無法啟動
- Visual Studio 2019:插入多个C++风格的单行注释
- Visual Studio Code "undefined reference to `WinMain@16'"
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- Visual Studio中的函数声明和函数定义问题
- 如何指定我希望我的LIB链接到的DLL文件?-Visual Studio 2019
- Visual Studio mkl_link_tool.exe链接错误
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- 不同的Visual Studio版本中缺少.dll
- 用Visual Studio在C++中嵌入Julia
- Visual Studio 2017循环自动向量化问题
- 有没有办法在远程设备上打开和编辑visual Studio 2017解决方案
- 尝试使用继承和模板实现CRTP.Visual Studio正在生成编译器错误
- Visual Studio在尝试读取resource.txt文件时崩溃
- Visual Studio 2017 不允许我创建 C++ 专用模板