Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.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

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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/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和Xcode添加外部项目的库_Xcode_Cmake - Fatal编程技术网

构建使用CMake和Xcode添加外部项目的库

构建使用CMake和Xcode添加外部项目的库,xcode,cmake,Xcode,Cmake,我正在尝试使用CMake构建一个库(它反过来链接到通过CMake构建的其他库)。我在这个过程中遇到了一些问题,希望能得到一些指导 对于库,我有一个CMakeLists.txt,它基本上 set(SRC srcfile1.cpp srcfile2.cpp) set(HEADERS srcfile1.h srcfile2.h) add_library(myLib ${SRC} ${HEADERS}) INSTALL(FILES ${HEADERS} DESTINATION “include/myL

我正在尝试使用CMake构建一个库(它反过来链接到通过CMake构建的其他库)。我在这个过程中遇到了一些问题,希望能得到一些指导

对于库,我有一个CMakeLists.txt,它基本上

set(SRC srcfile1.cpp srcfile2.cpp)
set(HEADERS srcfile1.h srcfile2.h)

add_library(myLib ${SRC} ${HEADERS})
INSTALL(FILES ${HEADERS} DESTINATION “include/myLib”)
对于“Unix Makefiles”生成器,使用cmake命令

cmake -DCMAKE_INSTALL_PREFIX=. -DCMAKE_BUILD_TYPE=debug -G “Unix Makefiles” ..
我在build/src中获得了一个合适的调试库libMyLib.a。对于发布版本类型,libMyLib.a的发布版本放在build/src中

但是,对于Xcode生成器,该库位于src/Debug中。我在这里面临的问题是

a。在Xcode中进行归档似乎没有任何效果。我没有看到在任何地方创建相应的发布库

b。我还有一个myLibTests目标(使用Google gtest),它在CMakeLists.txt中定义为

  set(SRC myTest.cpp)
  add_executable(myLibTests ${SRC})
  add_dependencies(myLibTests myLib gtest)
  set(gTestLib External/src/gTestLib)
  target_link_libraries(myLibTests myLib gTestLib)
当cmake生成器为“Unix Makefiles”时,myLibTests将生成链接并正常运行。gTestLib放在External/src/gtest build/中。但是,当它是“Xcode”时,它找不到gTest库。因为,库根据具体情况放置在External/src/gTestLib/Debug(或Release)中(并且在CMakeLists.txt中设置的上述路径不再有效)。我不知道如何在上面的set语句中适当地设置它的路径

因为调试/发布是在Xcode中控制的(CMake中的配置过程不知道这一点),我假设没有办法分离gTestLib的发行版/调试版,也没有办法让CMake configure Xcode在构建myLib时选择合适的版本,也就是说,如果我对myLib进行调试版,它也会对gTest进行调试版并链接到它(类似于发行版)?或者,是否可以将Xcode配置为将调试版本和发布版本放在同一位置(然后硬编码上面的路径)?配置此项的最佳方式是什么


谢谢。您可以将整个gtest项目添加到代码中,只需执行
add_子目录(“第三方/gtest”)
即可。在这种情况下,您可以将
gtest
用作“本地”库。例如,像您自己的目标:
target\u link\u库(myLibTests myLib gtest)
。2.首先安装gtest(Release/Debug或两者都安装),然后使用
find_-package(gtest)
命令来定位libs。谢谢Ruslo。我采取了不同的方法。我现在为调试/发布维护不同的文件夹。在CMakeLists.txt中,我检查生成器是否为XCode,构建类型是否为release。如果是这样,我将CMAKE_配置_类型设置为Release。这使得CMake生成的XCode项目默认为针对其所有构建发布。因为我知道它现在正在CMake期间进行发布/调试构建,所以我可以正确设置库的路径