gpt4 book ai didi

c++ - 如何用 C++ 代码解决这个 cmake 问题?

转载 作者:行者123 更新时间:2023-11-27 22:57:21 24 4
gpt4 key购买 nike

我用cmake编译了程序。cmakelist.txt:

cmake_minimum_required (VERSION 2.6) 
project (clustering)

IF(CMAKE_SIZEOF_VOID_P EQUAL 4)
SET(LIB_SUFFIX "")
ELSE(CMAKE_SIZEOF_VOID_P EQUAL 4)
SET(LIB_SUFFIX 64)
ENDIF(CMAKE_SIZEOF_VOID_P EQUAL 4)

SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}")

find_package(Eigen2 REQUIRED)
include_directories(${Eigen2_INCLUDE_DIR})

if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
"Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
FORCE)
endif(NOT CMAKE_BUILD_TYPE)

if(CMAKE_BUILD_TYPE MATCHES "Debug")
set(LIB_NAME clusteringd)
else(CMAKE_BUILD_TYPE MATCHES "Debug")
set(LIB_NAME clustering)
endif(CMAKE_BUILD_TYPE MATCHES "Debug")

file(GLOB LIB_PUBLIC_HEADERS "${CMAKE_SOURCE_DIR}/*.h")
file(GLOB LIB_SOURCES "${CMAKE_SOURCE_DIR}/*.cpp")

#add_library (${LIB_NAME}-s STATIC ${LIB_PUBLIC_HEADERS} ${LIB_SOURCES})
add_library (${LIB_NAME} SHARED ${LIB_PUBLIC_HEADERS} ${LIB_SOURCES})

install(
TARGETS ${LIB_NAME}
LIBRARY DESTINATION lib${LIB_SUFFIX}
)

#install(
# TARGETS ${LIB_NAME}-s
# ARCHIVE DESTINATION lib${LIB_SUFFIX}
#)

install(
FILES ${LIB_PUBLIC_HEADERS}
DESTINATION include/${LIB_NAME}
)

问题是在我的文件夹/clusteringmaster/build/CMakeFiles/2.8.12.2/我有两个文件夹 CompilerIdC 和 CompilerIdCXX,它们都有 exe 文件。正如 Sergey 指出的那样,exe 应该位于 bin 目录中。当我列出我的 CmakeFile

2.8.12.2        cmake.check_cache                CMakeOutput.log  Makefile2       progress.marks
clustering.dir CMakeDirectoryInformation.cmake CMakeTmp Makefile.cmake TargetDirectories.txt

来自作者教程

构建

You will need the Eigen2 library (libeigen2-devel) and CMake (only tested under Linux). 

$ mkdir release
$ cd release
$ cmake ../
$ make

我应该写 cmake -- build/home/milenko/clusteing-master/release 吗?

我以前没有用过cmake,我该如何解决这个困惑?

最佳答案

其中一项是应该使用 cmake 变量 ${PROJECT_NAME} 作为 add_library 命令的目标名称。 (由于 project (clustering) 语句,您的项目名称被指定为“clustering”。)要为调试配置构建获取 d 后缀,请使用 set (CMAKE_DEBUG_POSTFIX d)。我还喜欢使用

设置输出目录变量
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")

(我什至会设置 _DEBUG_RELEASE 变体,但这可能会在您刚开始时引起问题,所以我会等一下再做。)

关于c++ - 如何用 C++ 代码解决这个 cmake 问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31537234/

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