好吧,我的意图是创builddynamic库的Mac,Windows和Linux与Java(32位和64位)使用。
我正在使用Jetbrains的产品,在我看来,我认为,通过TeamCity,我可以为每个平台(我已经设置好)构build代理,然后为每个平台生成这些库。
我的CMake项目是在CLION中完成的 。 尽pipe我有点困惑。
这是目前我的cmakelists.txt:
cmake_minimum_required(VERSION 3.7) project(TestProject) set(CMAKE_CXX_STANDARD 14) function(build bits) message("Building ${bits} bits...") set(CMAKE_BUILD_TYPE Release) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "bin${bits}") set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "bin${bits}") if (WIN32) include_directories("C:/Program Files/Java/jdk1.8.0_121/include" "C:/Program Files/Java/jdk1.8.0_121/include/win32") endif (WIN32) #Includes for linux and mac here set(SOURCE_FILES src/main.cpp) set(EXEC_SOURCE_FILES ${SOURCE_FILES} src/main.cpp) add_library(TestProject SHARED ${SOURCE_FILES}) endfunction() if (CMAKE_SIZEOF_VOID_P EQUAL 8) build(64) else (CMAKE_SIZEOF_VOID_P EQUAL 8) build(32) endif (CMAKE_SIZEOF_VOID_P EQUAL 8)
我很困惑CMake的概念,到目前为止,我认为它有点像一个设置生成器,然后你运行在你想要设置你的程序的机器上,但我不明白为什么它已经在创build我的dll库。
这就是我想要的行为,但我不希望安装程序在机器上运行,我希望我的.dll和.so文件准备好并准备就绪,就这样了。
无论如何,为了解决这个问题,生产的图书馆是否可以用于分发? 如果是这样,我怎样才能让它在linux上生成.so文件,在Windows上使用相同的cmakelists.txt生成.dll文件? 此外,依赖项是否被添加到库中?
最后,CMake将使用什么编译器? 我在Windows上使用了mac,cygwin和mingw-64,我觉得在Ubuntu上只有gcc。
我可能太愚蠢了,但我似乎无法理解CMake。
我的要求总结清单:
我一直在试着从各处汇集各种信息,但我无法按照自己想要的方式得到它。
最后,我很抱歉,如果这不是一个合适的问题,但我不知道还有什么要问的。 如果有更好的地方,让我知道,我会删除并重新发布那里。