【问题标题】:Clion: Target "[NAME]" not foundClion:未找到目标“[NAME]”
【发布时间】:2015-08-11 09:01:47
【问题描述】:

当我尝试构建我的项目时,我在构建配置中看到了这个(它会弹出):

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

错误:未找到目标“LUCID (LUCID)”。

“目标”下拉菜单中只有一项(以及“全部构建”选项)。我确实在 CMakeLists.txt 中有 project(LUCID)add_executable(LUCID ${SOURCE_FILES}),正如 this question 中所建议的那样,尽管情况略有不同。

那么,为什么我会收到这个错误,我该怎么做才能修复它?

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

【问题讨论】:

标签: build cmake project clion


【解决方案1】:

我认为您可以将所有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 然后我就按照这个逻辑。

【讨论】:

  • 谢谢,这看起来更干净。但是,您是否愿意解释为什么以及哪一部分解决了缺少目标的问题?此外,set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/") 不能移动到 find_package 调用下方,因为它们需要它来查找 FindBox2D.cmake 等文件。
  • 好的,我固定了set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/") 的位置,我从来没有使用过这个。并添加了一些解释。这现在有效吗?
  • 是的,这解决了我的问题(我仍然有构建问题,但这是另一回事)。感谢您的澄清,我现在明白问题是包含问题。
  • 我想我应该添加一个注释,我不确定是不是这个解决了我的问题。我似乎这个问题在重新启动 Clion 时随机出现或消失。我无法理解这个......
  • 在这种情况下,这主要是 clion 的问题,我建议您向他们报告错误:youtrack.jetbrains.com/issues?q=project%3A+CLion。我希望他们能尽快为您解决。
【解决方案2】:

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

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

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

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

【讨论】:

    【解决方案3】:

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

    Tools > CMake > Reset Cache and Reload Project
    

    【讨论】:

      猜你喜欢
      • 2021-07-08
      • 1970-01-01
      • 2015-10-19
      • 2021-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-03
      • 1970-01-01
      相关资源
      最近更新 更多