我在使用 CMake 时遇到问题,我无法将我的文件添加到 Visual Studio 内的文件夹/过滤器中。
# Add folders to filters
file(GLOB_RECURSE DATABASE_SRCS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/database *.cpp *.h)
file(GLOB_RECURSE LOG_SRCS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/log *.cpp *.h)
file(GLOB_RECURSE NETWORK_SRCS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/network *.cpp *.h)
file(GLOB_RECURSE THREADING_SRCS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/threading *.cpp *.h)
file(GLOB_RECURSE UTILS_SRCS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/utils *.cpp *.h)
source_group(database FILES ${DATABASE_SRCS})
source_group(log FILES ${LOG_SRCS})
source_group(network FILES ${NETWORK_SRCS})
source_group(threading FILES ${THREADING_SRCS})
source_group(utils FILES ${UTILS_SRCS})
可能导致此问题的一个问题是GLOB_RECURSE
' 返回位于${CMAKE_CURRENT_SOURCE_DIR}
但相对于/database
(或任何其他目录)的文件。
例如,有一个文件database/
名为dbcore.cpp
. 该文件被添加到DATABASE_SRCS
as dbcore.cpp
,但主目录(即${CMAKE_CURRENT_SOURCE_DIR}
)中的文件也被添加,但具有相对于 的路径database/
,例如../common.h
.
另一个问题可能是在 Visual Studio 项目内部,默认的“头文件”和“源文件”过滤器已经存在。
我正在使用 CMake 2.8.6 和 Visual Studio 11/2012。