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

时间:2015-08-11 09:01:47

标签: build cmake project clion

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

Run/Debug Configrations window, with error message

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

  

错误:找不到目标'LUCID(LUCID)'。

“目标”下拉列表中只有一个项目(以及“全部构建”选项)。我在this question中建议使用CMakeLists.txt中的project(LUCID)add_executable(LUCID ${SOURCE_FILES}),但情况略有不同。

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

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

2 个答案:

答案 0 :(得分:2)

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

你可能看起来像这样的

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的问题是include_directories之后的add_executable,并且常见的工具链包括 - >编译 - >链接然后我只是遵循这个逻辑。

答案 1 :(得分:0)

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

我的CMakeLists.txt的结尾如下:

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

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