想让独立的程序与cmake
Want to make standalone program with cmake
我的程序使用giblib和Imlib2库,并使用cmake构建。
它在我的电脑上运行得很好,但在别人的电脑上却不行。
我猜原因是我安装了程序需要的所有库,而其他人没有。
我的目标是制作独立的程序。(不需要另外安装任何库)
我应该在cmake文件中添加什么?
projectDef。源码
file (GLOB PLATFORM RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
X11/[^.]*.cpp
X11/[^.]*.h
X11/[^.]*.cmake
)
SOURCE_GROUP(X11 FILES ${PLATFORM})
add_definitions(
)
set (SOURCES
${SOURCES}
${PLATFORM}
)
add_x11_plugin(${PROJECT_NAME} SOURCES)
target_link_libraries(${PROJECT_NAME}
${PLUGIN_INTERNAL_DEPS}
)
include_directories(/usr/include/giblib)
include_directories(/usr/include/X11)
target_link_libraries(MyProject X11)
target_link_libraries(MyProject Imlib2)
target_link_libraries(MyProject giblib)
CMakeList.txt源代码
cmake_minimum_required (VERSION 2.6)
set (CMAKE_BACKWARDS_COMPATIBILITY 2.6)
set(BUILD_SHARED_LIBS OFF)
set(CMAKE_EXE_LINKER_FLAGS "-static")
Project(${PLUGIN_NAME})
file (GLOB GENERAL RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
[^.]*.cpp
[^.]*.h
[^.]*.cmake
)
include_directories(${PLUGIN_INCLUDE_DIRS})
SET_SOURCE_FILES_PROPERTIES(
${GENERATED}
PROPERTIES
GENERATED 1
)
SOURCE_GROUP(Generated FILES
${GENERATED}
)
SET( SOURCES
${GENERAL}
${GENERATED}
)
include_platform()
尝试在根目录CMakeLists.txt中使用这些选项:
set(BUILD_SHARED_LIBS OFF)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static")
BUILD_SHARED_LIBS只有在你的项目有自己的库(add_library)时才需要。
使用-static
链接器标志,您还需要为所有附加库提供静态库!静态链接的一个常见问题是避免循环依赖。
相关文章:
- 将库链接到另一个应用程序时,CMAKE 找不到库
- DLL Made with CMake 使程序崩溃
- 如何获得CMake Tools以在Visual Studio Code中编译具有C++11(或更高版本)功能的程序?
- 如何使用cmake和Visual Studio 2019编译简单的Windows应用程序?
- 使用CMake ExternalProject_Add构建mongo cxx驱动程序
- CMake导出的库-在客户端应用程序中找不到include/Lib路径
- Cmake无法在qt-creater/collect2上编译简单的测试程序:错误:ld
- 使用Cmake进行简单的CUDA程序
- CMake 生成的程序无法在 Windows 上链接:尝试链接到不存在的文件
- 如何使用CMake在Windows上将应用程序入口点设置为main()C++?
- Windows10 上的 VS Code + WSL 应用程序上的 CMake 扩展
- CMake:find_package中的项目如何破坏程序?
- 将Qt应用程序与CMake和Visual Studio链接起来
- 在使用 cmake 和 pybind11 构建示例应用程序时找不到 Python.h
- Cmake:如何引用链接到多个程序的目标文件中的文件?
- CMake 和 Visual Studio 2015 - C 编译器 cl.exe 无法编译简单的测试程序
- 在用CMAKE制作程序之前如何制作库?
- 为什么与Java和Python相比,使用Cmake运行C++程序每次都需要这么长时间?
- 使用 cmake 编译带有 v8 库的 C++ 程序
- 如何在 MSYS2 中通过 CMake 构建 c++ Qt5 应用程序