用法:set_target_properties(target_name PROPERTIES INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/include") 描述:设置目标的包含目录。 COMPILE_DEFINITIONS 用法:set_target_properties(target_name PROPERTIES COMPILE_DEFINITIONS MY_DEFINITION) 描述:为目标设置编译时宏定义。 获取目标属性的方法通常是使用get_target_pr...
PROPERTIES prop1 value1 prop2 value2 ...) 这条指令可以用来设置输出的名称,对于动态库,还可以用来指定动态库版本和 API 版本。 在本例中,需要作的是向lib/CMakeLists.txt 中再添加一条: SET_TARGET_PROPERTIES(hello_static PROPERTIES OUTPUT_NAME "hello") 这样,我们就可以同时得到libhello.so和libhello...
PS:前面使用set_target_properties重新定义了库的输出名称,如果不使用set_target_properties也可以,那么库的名称就是add_library里定义的名称,只是连续2次使用add_library指定库名称时(第一个参数),这个名称不能相同,而set_target_properties可以把名称设置为相同,只是最终生成的库文件后缀不同(一个是.so,一个是.a)...
set_target_properties(Thirdlib PROPERTIES IMPORTED_LOCATION {CMAKE_CURRENT_SOURCE_DIR}/jniLibs/libThirdlib.so )CMAKE_CURRENT_SOURCE_DIR 这个变量是系统自定义的,表示CMakeLists.txt文件的绝对路径 注意CMakeLists.txt文件的路径,我的这个文件是放在app/src/main 下。
set_target_properties(mylibrary PROPERTIES PUBLIC_HEADER include/mylibrary.h):设置动态库的属性,将include/mylibrary.h指定为动态库的头文件。 总结 通过以上的步骤,你可以解决Android CMakeLists中设置动态库找不到头文件的问题。首先,你需要创建一个CMakeLists.txt文件,并添加动态库。然后,你需要设置源文件和头...
if(NOT DEFINED QT_DEFAULT_MAJOR_VERSION) set(QT_DEFAULT_MAJOR_VERSION 5) endif() if (NOT TARGET Qt5::qmake) add_executable(Qt5::qmake IMPORTED) set(imported_location "${_qt5Core_install_prefix}/bin/qmake.exe") _qt5_Core_check_file_exists(${imported_location}) set_target_properties(...
set_target_properties(demo5 PROPERTIES ARCHIVE_OUTPUT_DIRECTORY"/home/xy/cmake_practice/lib/" LIBRARY_OUTPUT_DIRECTORY"/home/xy/cmake_practice/lib/" RUNTIME_OUTPUT_DIRECTORY"/home/xy/cmake_practice/bin/" ) 1. 2. 3. 4. 5. 6.
set_target_properties(MyExecutable1PROPERTIES COMPILE_DEFINITIONS"DEBUG")set_target_properties(MyExecutable2PROPERTIES COMPILE_DEFINITIONS"RELEASE") 3、高级查找和配置 3.1 查找包的高级用法 find_package() 指令可以用于查找和配置复杂的第三方库和包。
通过访问属性OUTPUT_NAME的设置值,可以确保第二个set_target_properties重写第一个set_target_properties。
# SET_TARGET_PROPERTIES (hello_static PROPERTIES OUTPUT_NAME "hello") # 3、cmake在构建一个新的target时,会尝试清理掉其他使用这个名字的库, # 因此,在构建libhello.a时,就会清理掉libhello.so. # 为了回避这个问题,比如再次使用SET_TARGET_PROPERTIES定义 CLEAN_DIRECT_OUTPUT属性。