CMake库目标并不总是出现在Visual Studio 2017的“启动项”下拉列表中 我目前正在使用CudieCtudio新的ISH内置支持CMake的CGED C++项目:
我的根CMakeLists.txt文件设置了几个变量,然后包括多个子目录:CMake库目标并不总是出现在Visual Studio 2017的“启动项”下拉列表中 我目前正在使用CudieCtudio新的ISH内置支持CMake的CGED C++项目: ,c++,visual-studio,cmake,visual-studio-2017,C++,Visual Studio,Cmake,Visual Studio 2017,我的根CMakeLists.txt文件设置了几个变量,然后包括多个子目录: project("MyProject") cmake_minimum_required(VERSION 3.4.3) set (CMAKE_CXX_STANDARD 14) include_directories(projecta/include) include_directories(projectb/include) include_directories(projectc/include) # Dump th
project("MyProject")
cmake_minimum_required(VERSION 3.4.3)
set (CMAKE_CXX_STANDARD 14)
include_directories(projecta/include)
include_directories(projectb/include)
include_directories(projectc/include)
# Dump the DEBUG and RELEASE outputs next to the program
# that will use the DLL
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_LIST_DIR}/../lib")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_LIST_DIR}/../lib")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_LIST_DIR}/../dll")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_LIST_DIR}/../lib")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_LIST_DIR}/../lib")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_LIST_DIR}/../dll")
add_subdirectory(projecta)
add_subdirectory(projectb)
add_subdirectory(projectc)
projecta、projectb和projectc子目录包含简单的CMakeLists.txt文件,如下所示:
set(LIB_NAME "projectc")
set(LIB_DEPENDENCIES "projecta" "projectb")
include_directories(include)
FILE(GLOB_RECURSE SOURCE_CPP_FILES "src/*.cpp")
FILE(GLOB_RECURSE SOURCE_C_FILES "src/*.c")
FILE(GLOB_RECURSE HEADER_FILES "include/"${LIB_NAME}"/*.h")
add_library(${LIB_NAME} ${PLT_LIBRARY_MODE} ${SOURCE_CPP_FILES} ${SOURCE_C_FILES} ${HEADER_FILES})
target_link_libraries(${LIB_NAME} ${LIB_DEPENDENCIES})
我从开发人员控制台打开项目:
devenv <the directory containing the top CMakeLists.txt file>
我的问题:由add_库定义的共享库不会显示为“选择启动项”下的目标,这使我无法在目标的.cpp文件中使用F7进行编译
在“选择启动项”下选择当前文档无效-F7或Ctrl-Shift-B无效。我不确定使用此功能的规则是什么。
我以前见过这样的DLL出现在那里,但我无法确定在我的其他CMakeLists.txt文件中有什么不同,我不再有它们了
如果使用add_子目录包含第三方库的CMakeLists.txt,则其.exe目标将显示在“选择启动项”下,我可以对其使用F7。
如果我右键单击顶级CMakeLists.txt文件,我可以看到构建中的所有DLL、LIB和EXE目标。这就是我现在编译的方式,但它不如混搭F7那么令人满意;
有人遇到过类似的问题吗?我的环境/缓存可能已损坏。我删除了项目目录中自动生成的.vs文件夹,并使用 和以前一样 我现在可以使用F7构建任何cpp文件。仍然无法在Select Startup项下看到任何DLL目标,但这已经足够好了
编辑:或者,CMake/Cache/Generate/CMakeLists.txt似乎也有帮助。而且还要确保升级到15.3,并提供更多与CMake相关的修复程序。谢谢-这大大改变了行为。仍然希望我能为dll目标定义一个默认构建,这样我就可以从任何地方对F7进行mash,但仍然没有成功。