gpt4 book ai didi

c++ - CMake 在 Linux 中构建共享对象 .so 文件

转载 作者:可可西里 更新时间:2023-11-01 11:34:23 24 4
gpt4 key购买 nike

任务 -> 运行 Cmake 在 windows 中生成 dll,在 linux 中生成共享对象(.so 文件)。

我正在将代码从 Windows 移植到 Linux。我已对源代码进行了必要的更改。我曾尝试更改 CMakeLists.txt 文件,但当我尝试这样做时,它会提示“找不到源文件”。请你们指出我在哪里犯了错误。 CMakeList.txt 如下所示。cmake 在 Windows 中运行良好,但在 Linux 中它会提示错误。
我在 CMakeLIsts.txt 中评论了几行并添加了行以使其在 Linux 中工作,但它不起作用。

CMAKE_MINIMUM_REQUIRED( VERSION 2.8 )
CMAKE_POLICY( SET CMP0017 NEW )

PROJECT( disk_space_model )
INCLUDE( ../libs/helper_functions.cmake )
INCLUDE_THIRD_PARTY_SFC()

SET( HEADER_FILES
stdafx.h
INS_sensor_model.h
)

SET( SOURCE_FILES
Disk_space_model.cpp
)

SET( RESOURCE_FILES
"Disk Space DLL.rc"
resource.h
)

COMMON_SETUP()
SETUP_Lab_LIB_FILES( lib_foo lib_boo_files lib_platform lib_utils )

#ADD_DEFINITIONS(-D_USRDLL -DINSSENSORDLL_EXPORTS)
#ADD_LIBRARY( disk_space_model SHARED ${SOURCE_FILES} ${HEADER_FILES} ${RESOURCE_FILES} ${CMAKE_HELPER_FILES} )
set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--export-all-symbols")
ADD_LIBRARY( disk_space_model [ STATIC | SHARED ] ${SOURCE_FILES} ${HEADER_FILES} ${RESOURCE_FILES} ${CMAKE_HELPER_FILES} )
SET_OUTPUT_DIRS( disk_space_model )
TARGET_LINK_LIBRARIES( disk_space_model ${LIB_FILES} )

以下是我在配置后在 CMake-gui 上生成并生成时收到的以下错误

  4 bit compiler
-- Configuring done
CMake Error at CMakeLists.txt:37 (ADD_LIBRARY):
Cannot find source file:

[

Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
.hxx .in .txx


CMake Error in CMakeLists.txt:
Cannot find source file:

STATIC

Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
.hxx .in .txx


CMake Error in CMakeLists.txt:
Cannot find source file:

|

Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
.hxx .in .txx


CMake Error in CMakeLists.txt:
Cannot find source file:

SHARED

Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
.hxx .in .txx


CMake Error in CMakeLists.txt:
Cannot find source file:

]

Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
.hxx .in .txx


-- Build files have been written to: /home/mydir/svn/proj1/apps/disk space
make: *** [cmake_check_build_system] Error 1

最佳答案

因为这个坏了:

ADD_LIBRARY( disk_space_model [ STATIC | SHARED ] ${SOURCE_FILES} ${HEADER_FILES} ${RESOURCE_FILES}  ${CMAKE_HELPER_FILES} )

我猜你复制粘贴了[ STATIC | SHARED ] 来自文档。这应该是 STATICSHARED 的选择(在您的情况下是后者)。

关于c++ - CMake 在 Linux 中构建共享对象 .so 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15199694/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com