在尝试构建项目时,我在构建配置中看到了这一点(弹出):
“LUCID”是我项目的名称。我认为昨天一切都很好,但是现在我只是在重申之后才得到这个:
错误:找不到目标'LUCID(LUCID)'。
“目标”下拉列表中只有一个项目(以及“全部构建”选项)。我在this question中建议使用CMakeLists.txt中的project(LUCID)
和add_executable(LUCID ${SOURCE_FILES})
,但情况略有不同。
那么,为什么我会收到此错误,我该怎么做才能修复它?
需要注意的另一点是,应该是我的项目的一部分且在set(SOURCE_FILES ...)
中指定的所有文件名在CLion文件浏览器中都是灰色的,它们不应该是。
答案 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
可执行文件。然后我取消了最后一行的注释。所有配置仍然可以。