Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CMake库目标并不总是出现在Visual Studio 2017的“启动项”下拉列表中 我目前正在使用CudieCtudio新的ISH内置支持CMake的CGED C++项目: _C++_Visual Studio_Cmake_Visual Studio 2017 - Fatal编程技术网

CMake库目标并不总是出现在Visual Studio 2017的“启动项”下拉列表中 我目前正在使用CudieCtudio新的ISH内置支持CMake的CGED C++项目:

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

我的根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 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,但仍然没有成功。