Nik*_*nka 0 c++ linux ubuntu cmake clion
我正在尝试编译一个使用 xlib 和 cmake 的 c++ 程序。但是,我在 cmake 文件中包含和链接 xlib 库时遇到问题。
这是我得到的错误。
main.cpp:378: undefined reference to `XClearWindow'
collect2: error: ld returned 1 exit status
CMakeFiles/project1.dir/build.make:94: recipe for target 'project1' failed
make[2]: *** [project1] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/project1.dir/all' failed
make[1]: *** [CMakeFiles/project1.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
Run Code Online (Sandbox Code Playgroud)
当我只使用命令行编译时,它工作得很好。
我使用这个命令(g++ main.cpp -L/usr/X11R6/lib -lX11)
这是我的 cmake 文件。
cmake_minimum_required(VERSION 3.6)
project(project1)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
link_directories(/usr/X11R6/lib)
include_directories(/usr/share/X11)
set(SOURCE_FILES main.cpp)
add_executable(project1 ${SOURCE_FILES})
Run Code Online (Sandbox Code Playgroud)
在您的情况下,您忘记指定 cmake 应该用于链接您的应用程序的库(target_link_libraries或link_libraries)。
但是,为什么不让 cmake 自己找到所需的路径、库和包含?我建议你使用find_package(X11). 在您的情况下,您可以尝试:
cmake_minimum_required(VERSION 3.6)
project(project1)
set(CMAKE_CXX_STANDARD 11) # for c++11
find_package(X11 REQUIRED)
link_libraries(${X11_LIBRARIES})
include_directories(${X11_INCLUDE_DIR})
set(SOURCE_FILES main.cpp)
add_executable(project1 ${SOURCE_FILES})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2899 次 |
| 最近记录: |