Clion:未找到目标“[NAME]”

Clion: Target "[NAME]" not found

尝试构建我的项目时,我在构建配置中看到了这一点(弹出):

"LUCID" 是我的项目名称。我认为昨天一切都很好,但现在在重申之后我得到了这个:

Error: Target 'LUCID (LUCID)' not found.

"Target" 下拉列表中只有一项(还有 "Build All" 选项)。正如 中所建议的那样,我在 CMakeLists.txt 中确实有 project(LUCID)add_executable(LUCID ${SOURCE_FILES}),尽管情况略有不同。

那么,为什么我会收到此错误消息,我该如何解决?

另一件需要注意的事情是,所有应该属于我的项目并在 set(SOURCE_FILES ...) 中指定的文件名在 CLion 文件浏览器中都是灰色的,它们不应该是灰色的。

我想你可以把所有的 include_directory 放在 add_executable 之前。 如果您使用 REQUIRED 关键字,则仅使用 find_package(SDL2 REQUIRED) 更进一步,您不必使用 if (lib_FOUND) source here.

您的 CMake 可能看起来像这样

cmake_minimum_required(VERSION 3.2)
project(LUCID)

set(EXEC_NAME LUCID)

MESSAGE("a test message")

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")

find_package (Box2D REQUIRED)
find_package (opengl REQUIRED)
find_package (SDL2 REQUIRED)

set(INCLUDE_DIR
    sinclude
    sinclude/3rdparty
    uniheader
    D:/freetype-2.5.3/GnuWin32/include
    ${BOX2D_INCLUDE_DIRS}
    ${OPENGL_INCLUDE_DIRS}
    ${SDL2_INCLUDE_DIRS}
)

include_directories(${INCLUDE_DIR})

set(SOURCE_FILES
    ssrc/Cam.cpp
    #...
    #Lots of source and header files in the same form
)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")


message(STATUS "Boaorm")

add_executable(${EXEC_NAME} ${SOURCE_FILES})

target_link_libraries(${EXEC_NAME} ${BOX2D_LIBRARIES} ${OPENGL_LIBRARIES} ${SDL2_LIBRARY})

对于 SDL,我使用 this answer,但我不喜欢使用 ${PROJECT_NAME} 作为可执行文件名(您可以随意选择)

编辑:
多个target_link_libraries解释here
旧 cmake 的问题是 add_executable 之后的 include_directories 并且常见的工具链是 include -> compile -> link 那么我就遵循这个逻辑。

我昨天遇到了这个奇怪的错误。我的 CMakeLists.txt 是正确的(因为我可以通过终端构建项目)。

我的CMakeLists.txt结尾是这样的:

add_executable(assignment-1 main.cpp ${SOURCES})
add_library(libassignment-1 STATIC ${SOURCES})

我删除了 CMake 缓存目录,注释掉 add_library() 并重新加载它。就这样,CLion 现在可以找到 assignment-1 可执行文件。然后我取消注释最后一行。所有配置都还可以

重置缓存并重新加载项目!

Tools > CMake > Reset Cache and Reload Project