Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CMake在哪里建立库_Cmake - Fatal编程技术网

CMake在哪里建立库

CMake在哪里建立库,cmake,Cmake,在windows cmake上,在中生成库 ${CMAKE_BINARY_DIR}/>/>/Libname.lib 论ubuntumate ${CMAKE_BINARY_DIR}/Libname.a 有没有办法让这条路走下去?我对这样一个完整的从路径到库的用例 详情如下: add_library(${LIB_NAME} STATIC ${SOURCES}) #... target_link_libraries(${PROJECT_BENCH_NAME} debug ${FULL_PATH_T

在windows cmake上,在中生成库

${CMAKE_BINARY_DIR}/>/>/Libname.lib

论ubuntumate

${CMAKE_BINARY_DIR}/Libname.a

有没有办法让这条路走下去?我对这样一个完整的从路径到库的用例 详情如下:

add_library(${LIB_NAME} STATIC ${SOURCES})
#...
target_link_libraries(${PROJECT_BENCH_NAME} 
 debug ${FULL_PATH_TO_LIB}${LIB_NAME}${CMAKE_DEBUG_POSTFIX}${CMAKE_STATIC_LIBRARY_SUFFIX })

您可以分别为可执行文件、存档库(.a/.lib)和动态库(.dll/.so)自定义输出目录,然后使用此信息链接到特定文件。你可以找到详细的解释。(您还可以按目标设置输出目录)

例如,在您的情况下,您可以设置:


您可以分别为可执行文件、存档库(.a/.lib)和动态库(.dll/.so)自定义输出目录,然后使用此信息链接到特定文件。你可以找到详细的解释。(您还可以按目标设置输出目录)

例如,在您的情况下,您可以设置:


只需使用库目标链接:
target\u link\u库(${PROJECT\u BENCH\u NAME}debug${LIB\u NAME})
。我希望完整路径避免链接到错误的版本该版本应该是CMAKE\u BINARY\u DIR中的唯一版本(除非您从同一个CMakeLists.txt编译多个版本,此时它们应该是分开的
add\u library()
targets,这使得对它们的任何引用都是明确的。)CMake自动为您做了这么多好事(比如构建类型的后期修复),为什么要猜测它们?按目标名称链接提供了到正确库的链接。这不是按库名称链接。但您也可以使用:
target\u link\u libraries(${PROJECT_BENCH_NAME}debug$)
@Tsyvarev实际上,这是我遇到的一个问题,因为我在Windows下使用cmake+mingw获得的.lib、.lib.a和.dll文件有些不明确。我通过定义自定义的add\u dependencies宏解决了这个问题,我确实需要生成完整的文件名。只需使用库目标链接:
target\u link\u库即可(${PROJECT_BENCH_NAME}debug${LIB_NAME}
。我希望完整路径避免链接到错误的版本该版本应该是CMAKE_BINARY_DIR中唯一的版本(除非您从同一个CMakeLists.txt编译多个版本,此时它们应该是分开的
add_library()
targets,这再次明确了对它们的任何引用。)CMake自动为您做了这么多好事(比如构建类型的后期修复),为什么要猜测它们?按目标名称链接提供了到正确库的链接。这不是按库名称链接。但您也可以使用:
target\u link\u libraries(${PROJECT_BENCH_NAME}debug$)
@Tsyvarev实际上这是我遇到的一个问题,因为我在Windows下使用cmake+mingw获得的.lib、.lib.a和.dll文件存在一些歧义。我通过定义一个自定义的add_dependencies宏解决了这个问题,并且我确实需要生成完整的文件名。
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/)
add_library(${LIB_NAME} STATIC ${SOURCES})
#...
target_link_libraries(${PROJECT_BENCH_NAME} 
 debug ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}${LIB_NAME}${CMAKE_DEBUG_POSTFIX}${CMAKE_STATIC_LIBRARY_SUFFIX })